مُحقق JSON Schema

تحقق من بيانات JSON مقابل تعريفات JSON Schema. احصل على تقارير أخطاء مفصلة مع المسارات. جميع العمليات تتم في متصفحك.

تحقق فوري تفاصيل الأخطاء معالجة من جانب العميل

كيفية استخدام مُحقق JSON Schema

1

أدخل المخطط

حدد مخطط JSON الذي يصف البنية المتوقعة.

2

أدخل البيانات

الصق بيانات JSON التي تريد التحقق منها مقابل المخطط.

3

تحقق

انقر تحقق وراجع النتائج للبحث عن أي أخطاء.

ما هو JSON Schema؟

JSON Schema هو مفردات تسمح لك بالتعليق على مستندات JSON والتحقق منها. يوفر عقداً لبيانات JSON المطلوبة لتطبيق معين وكيفية التفاعل معها. يُستخدم JSON Schema للتحقق والتوثيق وإنشاء بيانات وهمية.

الميزات الرئيسية

تحقق الأنواع

تحقق من الأنواع: نص ورقم وعدد صحيح وقيمة منطقية ومصفوفة وكائن وقيمة فارغة

القيود

الحد الأدنى/الأقصى للطول والنمط والحقول المطلوبة والمزيد

تعريف البنية

حدد كائنات متداخلة ومصفوفات وهياكل بيانات معقدة

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

ما هو إصدار JSON Schema المدعوم؟

تدعم هذه الأداة مسودة JSON Schema-07 ومسودة 2019-09 ومسودة 2020-12 من خلال مكتبة Ajv. معظم ميزات المخطط الشائعة مدعومة.

هل يمكنني التحقق من الكائنات المتداخلة؟

نعم! يدعم JSON Schema الكائنات والمصفوفات المتداخلة بعمق. يمكنك تعريف الخصائص والعناصر في أي مستوى من التداخل، مع قواعد تحقق فردية لكل حقل.

ماذا يحدث إذا كان مخططي غير صالح؟

تتحقق الأداة أولاً من أن مخططك نفسه هو مخطط JSON صالح. إذا كان المخطط يحتوي على أخطاء، سيتم الإبلاغ عنها قبل محاولة التحقق من البيانات.

ما هي الكلمات المفتاحية في JSON Schema الأكثر استخداماً؟

type (string, number, object, array, boolean, null)، وproperties مع مخططات متداخلة، وrequired لسرد المفاتيح الإلزامية، وenum لمجموعات القيم الثابتة، وpattern للسلاسل النصية المقيّدة بتعبيرات نمطية (regex)، وفحوصات النطاق minimum/maximum وminLength/maxLength. أما additionalProperties: false فيقيّد الكائنات ضد المفاتيح الإضافية. مجتمعةً، تغطي هذه الكلمات الجزء الأكبر من قواعد التحقق في واجهات API.

كيف تتصرف الكلمات المفتاحية للتنسيق format مثل date-time وemail؟

في JSON Schema الحديثة، تُعد format شرحاً (annotation) افتراضياً وليس تأكيداً تلقائياً (assertion) - لا يفرضها المحققون إلا عند تهيئتهم لذلك، وهو ما أوضحته مواصفة 2020-12 بمفردات format-assertion منفصلة. استخدم pattern أو كلمة مفتاحية مخصصة عندما يجب ضمان الإنفاذ، وعامل format كبيانات وصفية للتوافقية في غير ذلك.

ما هو $ref وكيف تعمل إعادة استخدام المخططات؟

تشير $ref إلى #/$defs/address فتعود إلى جزء من المخطط ضمن $defs ويجري التحقق مقابله أينما استُخدم - وهي آلية إزالة التكرار. أعادت مسودة 2020-12 تسمية definitions القديمة إلى $defs، وأضفت صياغة رسمية لـ $dynamicRef للبنى التكرارية مثل أشجار التعليقات. يمكن للمراجع أيضاً أن تشير إلى مستندات خارجية، إلا أن تجميعها محلياً (bundling) أكثر شيوعاً.

ما الفرق بين oneOf وanyOf وallOf؟

يتطلب allOf نجاح التحقق من كل مخطط فرعي - وهو تقاطع، يُستخدم لدمج مخطط أساسي مع قيود إضافية. ويتطلب anyOf مخططاً فرعياً واحداً على الأقل - وهو اتحاد، يُستخدم للحمولات متعددة الأشكال (polymorphic). أما oneOf فيتطلب مخططاً فرعياً واحداً بالضبط؛ يفشل التحقق إذا تطابق مخططان فرعيان أو لم يتطابق أي منها، وهو أمر أكثر صرامة مما يتوقع الناس، وهو السبب المعتاد للأخطاء المفاجئة مع المخططات المتداخلة.

ما الذي تغيّر بين draft-07 و2020-12؟

قسّمت 2020-12 المواصفة إلى مفردات قابلة للتفاوض عليها بشكل منفصل (validation، annotation، format-assertion)، وأعادت تسمية definitions إلى $defs، وبسّطت exclusiveMinimum لتكون رقماً مباشراً، واستبدلت الكلمة المفتاحية items القديمة بـ prefixItems إلى جانب items. تدعم معظم الأدوات كليهما؛ لا تزال draft-07 الأوسع انتشاراً، لكن 2020-12 هي المعيار المنشور الحالي.

{-- * External Resources Component(#18 Phase 3b 内容佐证工程) * 工具页「权威引用」区块:RFC / W3C / WHATWG / ECMA / IANA / 官方规范站 / Wikipedia。 * * - 接受 :slug 属性 → 经 config/tool-sources.php 家族矩阵渲染该工具的权威引用 * - slug 未命中映射时不渲染(无权威来源的工具静默跳过) * - 链接 title 保持英文(引用源专名);description 经 * common.resources.descriptions.{key} 本地化,lang 未命中回退英文(线上不裸奔) * - 链接保持 dofollow(rel="noopener noreferrer") * * @param string|null $slug --}}