أدوات جيسون · 60دقيقة قراءة
مخطط JSON إلى JSON: من عينة الحمولة إلى العقد
يأخذ تحويل مخطط JSON إلى JSON مثالاً يعمل وينتج وصفًا يمكن قراءته آليًا لشكله. يمكن لهذا الوصف التحقق من صحة الحمولات المستقبلية، أو إنشاء الوثائق، أو تشغيل التعليمات البرمجية المكتوبة - ولكن فقط إذا تعاملت مع المخطط الذي تم إنشاؤه كمسودة أولى. يرى الاستدلال عينة واحدة، وعينة واحدة كاذبة واثقة جدًا.
تم التحديث
ما الاستدلال الذي يمكن وما لا يمكن رؤيته
من مستند واحد، يقوم المحول الجيد باشتقاق الأنواع والتداخل وأشكال عناصر المصفوفة وأسماء الخصائص بدقة. ما لا يمكن أن يستنتج هو النية. فهو لا يعرف أن الحقل اختياري لأن هذا السجل المحدد قد تضمنه، أو أن السلسلة عبارة عن عنوان بريد إلكتروني، أو أن الرقم عبارة عن عدد صحيح موجب، أو أن القيمة تأتي من مجموعة ثابتة.ولذلك يتم وضع علامة على كل شيء مشتق`required`وهو التقصير الصحيح في مسودة العقد والباطل في الشحن غير مفحوص.
تصلب المخطط الذي تم إنشاؤه
- قارن بين عينتين أو ثلاث عينات حقيقية: يجب أن تسقط المفاتيح المفقودة من أي عينة من `required`.
- يضيف`format`0`date-time`حيث يعرف المعنى -`email`1`uri`,`uuid`2`ipv4`,3,4,5.
- تحويل المجموعات المفتوحة إلى`enum`0القيم عندما يحتوي الحقل بالفعل على مفردات ثابتة، مثل الحالة أو المنطقة.
- تشديد الأرقام مع`minimum`0`maximum`,`multipleOf`1و2لذلك لا يمكن التحقق من صحة الكمية السالبة.
- أضف `additionalProperties: false` فقط عند ضرورة رفض المفاتيح غير المعروفة — وإلا اترك المخطط مفتوحًا للتوافق الأمامي.
المطلوب هو الوعد وليس الملاحظة. يعد وضع علامة على الحقل مطلوبًا لأن العينة الوحيدة الخاصة بك تحتوي عليه هي الطريقة الأكثر شيوعًا التي يكسر بها المخطط المستنتج التكامل الحقيقي.
حيث يكسب المخطط الاحتفاظ به
تظهر القيمة العملية عند الحدود: التحقق من صحة حمولة خطاف الويب قبل الثقة بها، والتحقق من ملفات التثبيت في CI بحيث تفشل الاختبارات في البيانات المشوهة بدلاً من الأخطاء الفارغة المربكة، وتوثيق استجابة واجهة برمجة التطبيقات (API) للأشخاص الذين لن يقرؤوا رمز الخادم أبدًا، وإنشاء عملاء مكتوبين. يعد مخطط JSON أيضًا أرخص وسيلة لمنع تغيير التكوين من تغيير الاستجابة العامة بصمت، لأن المدقق يلتقطها في وقت الإنشاء بدلاً من الإنتاج.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["id", "email"],
"properties": {
"id": { "type": "string", "format": "uuid" },
"email": { "type": "string", "format": "email" },
"plan": { "type": "string", "enum": ["free", "pro", "team"] }
}
}
يبقيه في التحكم في الإصدار
تنجرف المخططات التي تم إنشاؤها في اللحظة التي لا يمتلكها أحد. قم بتثبيت الملف المقوى بجوار الكود الذي ينتج البيانات، وقم بالإشارة إليه من أداة التحقق من الصحة في CI، وأعد الإنشاء فقط عندما يتغير العقد بشكل حقيقي - التعامل مع المخطط كمصدر الحقيقة للشكل والعينة كدليل، وليس العكس.
الاستدلال في المتصفح
الحمولات الحقيقية مليئة بالمعرفات ورسائل البريد الإلكتروني والرموز المميزة، لذا فإن تحويل مخطط JSON إلى JSON الذي يقوم بتحميل العينة يؤدي إلى تسليم بيانات الإنتاج لعملية ميكانيكية بحتة. يؤدي الاستدلال محليًا إلى إبقاء الحمولة في علامة التبويب، ويتيح لك لصق سجل العميل دون تفكير ثانٍ، ويعمل مع قطع الشبكة.
JSON إلى مخطط JSON — الأسئلة المتداولة
لماذا يخرج كل حقل كما هو مطلوب؟
لأن الاستدلال يرى عينة واحدة وتلك العينة تحتوي على كل حقل. المطلوب يعني الضمان، وبالتالي فإن المخطط الذي تم إنشاؤه هو نقطة البداية: قارن بعض العينات، ثم قم بإزالة المفاتيح التي تكون غائبة أحيانًا وأضفها`format`أو`enum`القيود حيث تعرف القواعد الحقيقية.
ما هي مسودة المخطط التي يجب أن أستخدمها؟
مسودة 2020-12 للعمل الجديد - إنها المواصفات الحالية وهي مدعومة جيدًا من قبل أدوات التحقق مثل ajv. إذا كنت تقوم بالتكامل مع نظام مثبت على Draft-07، فاستمر في إنشاء مستندات Draft-07؛ يختلف الاثنان بشكل أساسي في الكلمات الرئيسية الأحدث التي ربما لن تحتاج إليها.
هل يمكن لمخطط JSON التحقق من صحة المصفوفات أيضًا؟
نعم. ينتج عن استنتاج المصفوفة مخطط `items` يصف شكل العنصر ويمكن التحقق من شكل عنصر واحد باستخدام `prefixItems` في المسودات الحديثة. قم بدمج عينتين بأشكال عناصر مختلفة وسترى أين تكون هناك حاجة إلى `oneOf`.
الأدوات المذكورة في هذه التدوينة
المزيد من المقالات للقراءة
60دقيقة قراءة
JSON إلى TypeScript: الأنواع المطابقة للواقع
قم بتحويل واجهات JSON إلى TypeScript من استجابة API حقيقية - مفاتيح اختيارية، وتوحيدات فارغة، وأنواع متداخلة - وامنع الأنواع التي تم إنشاؤها من الانحراف.
60دقيقة قراءة
منسق JSON: جميل ومصغر وصالح بالفعل
منسق JSON يقوم بالطباعة الجميلة والتصغير والتحقق من صحة مواقع الأخطاء الدقيقة - بالإضافة إلى الأخطاء النحوية الخمسة وراء كل خطأ JSON غير صالح تقريبًا.
60دقيقة قراءة
JSON diff: مقارنة البيانات بالطريقة التي تم تنظيمها بها بالفعل
قارن حمولتي JSON مع فرق JSON الهيكلي الذي يتجاهل ترتيب المفاتيح والمسافات البيضاء، ويسلط الضوء على القيم المنقولة، ويوضح سبب تضليل فروق النص.
- مقال أطول للقراءة: JSON إلى TypeScript: الأنواع التي تقول الحقيقة