مولّد مخطط JSON
الصق عيّنة JSON واحدة أو أكثر، وسيستنتج المولّد مخطط JSON يمكنك استخدامه للتحقق من صحة الحمولات الجديدة. فهو يكشف الأنواع، ويعلّم الحقول على أنها إلزامية عندما تظهر في كل عيّنة، ويستنتج القيم المعدودة (enum) عندما تُؤخذ القيم من مجموعة صغيرة مغلقة، ويُنتج مخرجات متوافقة مع مخطط JSON draft 2020-12.
كيفية توليد مخطط JSON
-
1
الصق مستندات العيّنة
حمولة حقيقية واحدة أو أكثر؛ وكلما زاد التنوّع كان المخطط المستنتَج أكثر دقة.
-
2
اختر المسودة
draft 2020-12 (الحالية)، أو draft 07 (مدعومة على نطاق واسع)، أو draft 04 (لإصدارات OpenAPI القديمة).
-
3
اضبط الاستنتاج
تبديل استنتاج enum، واستراتيجية الحقول الإلزامية (التقاطع مقابل الاتحاد)، وما إذا كان يجب تعليم جميع الحقول بـ `required` عند تقديم عيّنة واحدة فقط.
-
4
ولّد
يُصدر المخطط مع `$schema` و`title` و`type` و`properties`، مع `$ref` متداخلة للكائنات الفرعية المتكرّرة.
ما يُتقنه الاستنتاج
- الأنواع: string، number، integer، boolean، null، array، object.
- قابلية القيمة الفارغة: الحقل الذي يكون
nullفي عيّنة وسلسلة نصية في أخرى يصبح["string", "null"]. - عناصر المصفوفة: المصفوفات المتجانسة تُنتج مخطط
itemsواحدًا؛ أما غير المتجانسة فتُنتجprefixItems. - القيم المعدودة (enum): إذا كانت جميع القيم المرصودة من مجموعة صغيرة (قابلة للضبط، والقيمة الافتراضية 10 قيم مختلفة)، فإنه يُصدر
enum. - الإلزامية: مع عدة عيّنات، يصبح تقاطع المفاتيح
required؛ ومع عيّنة واحدة تكون جميع المفاتيح إلزامية ما لم تختر خلاف ذلك. - الصيغ: السلاسل النصية التي تطابق تواريخ ISO-8601 أو عناوين البريد الإلكتروني أو URI تحصل على
formatمستنتَج.
ما لا يستطيع الاستنتاج معرفته
- النية مقابل المثال: العيّنة
age: 25تستنتجtype: integer، لكنها لا تستطيع معرفة أنك تقبلnullأيضًا. مرّر عدة عيّنات تغطّي الحالات الحدّية. - القيود:
minLengthوmaximumوpattern، عليك إضافتها يدويًا. لا يخمّن الاستنتاج الحدود من العيّنات. - منطق العمل: شرط «يجب ضبط حقل واحد بالضبط من هذه الحقول الثلاثة» يتطلب
oneOf، ولا يمكن استنتاجه. - المراجع: يُصدر المولّد مخططًا مسطّحًا. إذا أردت فصل الأشكال المتكرّرة في
$defs، فافعل ذلك بعد التوليد.
مثال على المخرجات
من عيّنة واحدة:
{ "name": "Alice", "age": 30, "tags": ["admin", "user"] }
المخطط المستنتَج (draft 2020-12):
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer" },
"tags": { "type": "array", "items": { "type": "string" } }
},
"required": ["name", "age", "tags"]
}
الأخطاء الشائعة
- الاستنتاج من عيّنة واحدة. سيُبالِغ المخطط في المطابقة، يصبح كل حقل إلزاميًا دون أي سماح بـ null. قدّم دائمًا ما لا يقل عن 5 إلى 10 عيّنات متنوّعة.
- استخدام
integerبينما كنت تقصدnumber. إذا احتوت أي عيّنة على رقم عشري، يصبح النوع المستنتَجnumber؛ وإذا كانت كلها أعدادًا صحيحة، يصبحinteger. أما الحقول التي قد تكون من أيّ منهما، فضمّن عيّنة تحتوي على رقم عشري. - نسيان الحقول الاختيارية. الحقل الموجود في 4 من 5 عيّنات والمفقود في واحدة يصبح اختياريًا، وهذا مقصود. أما إذا تضمّنته العيّنات الخمس جميعها، فسيعلّمه المخطط على أنه إلزامي رغم أنه في الواقع اختياري في واجهتك البرمجية.
الأسئلة الشائعة
كلما زاد العدد كان أفضل، لكن عادةً ما تُنتج 5 إلى 10 عيّنات متنوّعة مخططًا معقولًا. مع عيّنة واحدة يصبح كل حقل إلزاميًا ولا يمكن استنتاج قابلية القيمة الفارغة، لذا قدّم دائمًا عدة صِيَغ إن أمكن.
draft 2020-12 افتراضيًا. وتتوفّر draft 07 وdraft 04 للتوافق مع OpenAPI 3.0 (الذي يستخدم مجموعة فرعية من draft 05/07).
لا. استنتاج قيود معقولة من العيّنات سيُبالِغ في مطابقة المخطط. أضِف minLength وmaximum وpattern وغيرها يدويًا بعد التوليد وفق قواعد عملك.
نعم. إذا لصقت مصفوفة JSON، يعامل المولّد كل عنصر كعيّنة منفصلة ويُنتج مخططًا يصف عنصرًا مفردًا، لا المصفوفة الخارجية. فعّل خيار «معاملته كحاوية مصفوفة» إذا كنت تريد شكل المصفوفة الخارجية نفسها بدلًا من ذلك.
أدوات ذات صلة
مولّد إعدادات Webpack
أنشئ ملف webpack.config.js لـ webpack 5 لمشاريع JavaScript الخالصة أو React أو Vue: مع TypeScript وBabel وCSS أو Sass والصور وHtmlWebpackPlugin وخادم التطوير وسطر npm install.
محوّل ترميز ملفات النصوص
حوّل النص بين UTF-8 وUTF-16 وLatin-1 وWindows-1252 وترميزات أخرى لإصلاح الأحرف المشوّهة.
مرجع جدول ASCII
جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.
مولّد ملف .gitignore
اجمع قواعد استبعاد المشروع لـ Laravel وNode.js وPython وRails. انسخ الناتج أو نزّل ملف ZIP يحتوي على .gitignore، مع إبقاء القواعد الشخصية منفصلة.
مُحقق تنسيق XSD
قم بالتحقق من وثيقة XML وفقًا لمخطط XSD، وعرض أي اختلافات بين العناصر وأنواعها مع تحديد أرقام السطور بدقة.
مولد ملف tsconfig.json
أنشئ ملف tsconfig.json نظيفا باختيار target وmodule وmoduleResolution وJSX وأعلام الصرامة الشائعة، ثم انسخ الإعداد المولّد إلى مشروعك.
الأداة متاحة بلغات أخرى
- Generator JSON Schema [ID]
- Générateur de schéma JSON [FR]
- JSONスキーマジェネレーター [JA]
- Gerador de Esquema JSON [PT]
- เครื่องมือสร้าง JSON Schema [TH]
- Generador de Esquema JSON [ES]
- JSON 스키마 생성기 [KO]
- Trình tạo JSON Schema [VI]
- JSON-Schema-Generator [DE]
- JSON-schemagenerator [NL]
- JSON-schemagenerator [SV]
- Generator schematów JSON [PL]
- Генератор JSON-схем [RU]
- JSON Şema Oluşturucu [TR]
- JSON 模式生成器 [ZH]
- JSON Schema Generator [EN]
- Generatore di JSON Schema [IT]