مولّد مخطط 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، يعامل المولّد كل عنصر كعيّنة منفصلة ويُنتج مخططًا يصف عنصرًا مفردًا، لا المصفوفة الخارجية. فعّل خيار «معاملته كحاوية مصفوفة» إذا كنت تريد شكل المصفوفة الخارجية نفسها بدلًا من ذلك.
أدوات ذات صلة
مرجع جدول ASCII
جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.
مرجع أحرف HTML
قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.
مرجع اختصارات لوحة المفاتيح
ابحث في الاختصارات الافتراضية الموثقة لـ VS Code وChrome وBash مع GNU Readline على macOS وWindows وLinux.
مدقق البريد الإلكتروني
تحقق من عنوان بريد إلكتروني: فحص صياغة RFC 5322، واستعلام حي عن سجل MX، بالإضافة إلى تفاصيل الجزء المحلي والنطاق والطول. لا يتم إرسال أي بريد.
مولد EditorConfig
أنشئ ملف .editorconfig بقواعد نمط المسافة البادئة وحجمها ونهاية السطر ومجموعة الأحرف والمسافات البيضاء، لتنسيق موحّد عبر بيئات التطوير المتكاملة (IDEs) والمحررات.
منسق HTML
نسّق HTML محلياً في المتصفح بمسافة بادئة من مسافتين أو أربع مسافات. لا يُرفع HTML ولا يُتحقق منه.
الأداة متاحة بلغات أخرى
- JSON-schemagenerator [SV]
- Générateur de schéma JSON [FR]
- Generator JSON Schema [ID]
- JSON-Schema-Generator [DE]
- JSON 스키마 생성기 [KO]
- JSON-schemagenerator [NL]
- JSONスキーマジェネレーター [JA]
- เครื่องมือสร้าง JSON Schema [TH]
- Generator schematów JSON [PL]
- Generador de Esquema JSON [ES]
- Trình tạo JSON Schema [VI]
- Gerador de Esquema JSON [PT]
- JSON Schema Generator [EN]
- Generatore di JSON Schema [IT]
- Генератор JSON-схем [RU]
- JSON Şema Oluşturucu [TR]
- JSON 模式生成器 [ZH]