DevToolPal
ع

مدقّق JSON Schema

تحقّق من بيانات JSON مقابل JSON Schema ‏(2020-12 أو 2019-09 أو draft-07 أو draft-04) واعرض كل خطأ مع مساره.

يعمل محليًا، دون أي رفع

الخيارات

بيانات JSON

JSON Schema

نتيجة التحقق

تظهر النتيجة هنا

ما وظيفته

JSON Schema مفردات لوصف شكل بيانات JSON: الخصائص التي يجب أن يحتويها الكائن، ونوع كل قيمة، والنطاقات والأنماط المسموحة، وأطوال المصفوفات وغير ذلك الكثير. تستخدمه واجهات API في مواصفات OpenAPI، وتستخدمه المحررات للإكمال التلقائي في ملفات الإعداد، وتستخدمه الخوادم لرفض الطلبات الخاطئة.

يتحقق هذا المدقّق من مستند JSON مقابل مخطط ويعرض كل مشكلة يجدها. يبيّن كل خطأ موضعه في البيانات (JSON Pointer مثل /tags/1) ورسالة واضحة والكلمة المفتاحية التي فشلت في المخطط، فتصلح البيانات أو المخطط بسرعة. يدعم draft 2020-12 و2019-09 وdraft-07 وdraft-04، بما في ذلك $ref و$defs وallOf/anyOf/oneOf وif/then/else وunevaluatedProperties وفحص الصيغ.

طريقة الاستخدام

  1. الصق البيانات في بيانات JSON والمخطط في JSON Schema، أو ارفع ملفًا لكل جانب. يحمّل مثال سجل مستخدم فيه بعض الأخطاء المتعمّدة.
  2. تتحدّث النتيجة أثناء الكتابة: شارة خضراء عندما تكون البيانات صالحة، وإلا يظهر عدد الأخطاء وقائمتها.
  3. اترك الإصدار على تلقائي ليتبع $schema، أو اختر إصدارًا بعينه. أوقف عرض كل الأخطاء للتوقف عند أول خطأ.
  4. ينسخ زر نسخ الأخطاء القائمة نصًا عاديًا، لتقرير خلل أو مراجعة شيفرة.

إذا لم يكن أحد الجانبين JSON صالحًا، تذكر الرسالة إن كانت المشكلة في البيانات أم في المخطط مع رقم السطر والعمود.

مثال

مع هذا المخطط:

{
  "type": "object",
  "required": ["id"],
  "properties": {
    "id": { "type": "integer" },
    "age": { "type": "integer", "minimum": 0 }
  }
}

ينتج المستند {"age": -1} خطأين: في (الجذر) الخاصية الإلزامية id مفقودة، وفي /age القيمة أقل من الحد الأدنى 0.

نصائح

أضف "additionalProperties": false لاكتشاف أسماء الخصائص المكتوبة خطأً، والتي تمرّ بصمت بخلاف ذلك. استخدم enum أو const للقيم الثابتة وpattern للسلاسل مثل رموز المنتجات. عندما يكبر المخطط، انقل الأجزاء المتكررة إلى $defs وأشر إليها باستخدام $ref.

الأسئلة الشائعة

› ما إصدارات JSON Schema المدعومة؟

Draft 2020-12 و2019-09 وdraft-07 (ويشمل draft-06) وdraft-04. عند ضبط «الإصدار» على تلقائي يُقرأ الإصدار من الكلمة المفتاحية $schema، وتُعامل المخططات التي لا تحتوي $schema على أنها 2020-12.

› ماذا تعني المسارات في الأخطاء؟

المسار الأول هو JSON Pointer يشير إلى القيمة غير الصالحة في بياناتك، مثل /items/2/price، و«(الجذر)» تعني المستند كله. يعرض السطر الرمادي الكلمة المفتاحية التي فشلت وموضعها في المخطط، مثل minimum · #/properties/age/minimum.

› هل تُفحص الصيغ مثل email وdate-time؟

نعم. تُفحص الصيغ الشائعة: date وtime وdate-time وduration وemail وhostname وipv4 وipv6 وuri وuri-reference وuuid وregex وjson-pointer وغيرها. أما الصيغ غير المعروفة فتُتجاهل كما تسمح المواصفة.

› هل يمكن للمخطط الإشارة إلى ملفات أخرى؟

الإشارات داخل المخطط نفسه تعمل، مثل $ref إلى #/$defs/address. لا تُنزَّل عناوين URL الخارجية لأن لا شيء يغادر متصفحك؛ الصق التعريفات المشار إليها في $defs.