كيفية استخدام مدقّق JSON Schema
- الصق مستند JSON في المحرر الأول ومخطط JSON Schema في المحرر الثاني.
- اضغط «تحقق» (Validate).
- راجع جدول المخالفات؛ يوضح كل صف القيمة التي فشلت وسبب فشلها.
مزايا مدقّق JSON Schema
- التحقق وفق الكلمات المفتاحية الأساسية في draft-07 و2019-09 و2020-12
- دعم الكائنات المتداخلة والمصفوفات والصفوف (tuples) والقيم المعدودة والأنماط والصيغ (formats) والحدود الرقمية
- التعامل مع allOf / anyOf / oneOf / not وif-then-else ومراجع $ref المحلية
- إدراج كل مخالفة مع مسار JSON والكلمة المفتاحية والرسالة وموقعها في المخطط
- فحص المخطط نفسه والإبلاغ عن الأنواع غير المعروفة أو التعبيرات النمطية غير الصالحة
- تصدير المخالفات بصيغة CSV
مثال على مدقّق JSON Schema
التحقق من كائن مستخدم
الإدخال:
Document: {"email":"layla@example","age":17}
Schema: {"type":"object","required":["id"],"properties":{"email":{"format":"email"},"age":{"minimum":18}}}النتيجة:
$ required Missing required property "id".
$.email format String is not a valid email.
$.age minimum Value must be ≥ 18.الأسئلة الشائعة حول مدقّق JSON Schema
ما إصدارات JSON Schema المدعومة؟
الكلمات المفتاحية الأساسية في draft-07 و2019-09 و2020-12: type وproperties وrequired وenum وconst وpattern وformat والقيود الرقمية وقيود الطول وitems/prefixItems وcontains وallOf/anyOf/oneOf/not وif/then/else وdependentRequired ومراجع $ref المحلية.
هل تُحلّ مراجع $ref البعيدة؟
تُحلّ المراجع المحلية فقط (#/definitions/… و#/$defs/…). ولا تُجلب عناوين URL البعيدة، لذا ضمّن أي مخططات خارجية داخل المخطط أولاً.
ما صيغ السلاسل النصية التي يتم فحصها؟
email وdate-time وdate وtime وuuid وuri وhostname وipv4 وipv6 وregex وjson-pointer. وتُتجاهل الصيغ غير المعروفة كما توصي المواصفة.
كيف يُبلَّغ عن المخالفات؟
تُدرج كل مخالفة مع مسار JSON للقيمة المخالفة، والكلمة المفتاحية التي فشلت في المخطط، ورسالة بلغة مبسطة، وموقعها داخل المخطط.
ملاحظات تقنية
المدقّق تنفيذ خالٍ من الاعتماديات يقيّم الكلمات المفتاحية في جميع المستويات مع تتبّع مسار المثيل (instance) ومسار المخطط معاً. تُقيَّم الكلمات المفتاحية المجاورة لـ $ref (وفق سلوك 2019-09 وما بعده)، كما يُراعى امتداد nullable الخاص بـ OpenAPI.