القيمة المنطقية في البيانات تعبر عن إحدى حالتين محددتين. في JSON Schema، يقبل النوع boolean القيمتين true وfalse؛ ولا يقبل العددين 1 و0 بديلين عنهما. هذا حكم عن النوع في هذا المخطط، وليس قاعدة تحويل عامة لكل لغة برمجة. [1]
الخلاصة السريعة
اقرأ نوع الحقل وتعريفه: false نفي للحالة التي يصفها الحقل، وليست اعترافا بأننا لا نعرفها. حافظ على الفرق بين القيمة المنطقية والنص والقيمة null وغياب الحقل.
- في مخطط JSON ذي النوع boolean، استعمل true أو false؛ النص بين علامتي اقتباس والعددان 1 و0 لا يطابقانه. [1]
- في المثال التعليمي، غياب نتيجة فحص ختم ظرف لا يثبت أن الظرف بلا ختم؛ تبقى الحالة مجهولة.
- القيمة null تختلف عن غياب خاصية في JSON؛ ومعنى كل منهما في ملفك يحتاج تعريفا. [2]
- حدد التحويل المسموح قبل تجهيز المدخلات، واحفظ الأصل وارفض الحالات غير المعرّفة بدلا من اختراع نفي.
ما الذي يقبله نوع boolean هنا؟
توضح أمثلة JSON Schema أن النص "true" لا يطابق النوع boolean، وإن بدا للقارئ شبيها بالقيمة true. [1]
للقراءة البشرية، قد يكتب شخص كلمة نعم داخل خلية. لكن المصدر الآخر قد يرسل قيمة منطقية فعلية. التشابه في المعنى المقصود لا يجعل التمثيلين متطابقين تلقائيا. نحتاج اتفاقا معلنا إذا أردنا تحويل كلمة نعم إلى true، وكلمة لا إلى false؛ ونحدد ماذا يحدث للكلمات الأخرى بدلا من افتراض أنها إحدى الحالتين.
كيف يختلف النفي عن نتيجة لم تصل؟
تخيل سجل فحص افتراضيا لثلاثة ظروف ورقية. الحقل اسمه «وجد الفاحص ختما ظاهرا». أرسل السجل الأول true، والثاني false، ولم تصل نتيجة الثالث. لم نفحص ظروفا فعلية، ولا نستنتج من الرسم حالة بريد حقيقي.
إذا حولنا كل نتيجة لم تصل إلى false، يصبح جدولنا عاجزا عن التفريق بين نفي مسجل وعدم معرفة. هذا استنتاج من المثال نفسه، لا نتيجة تجربة تدريب. ويهم إعداد نموذج يستخدم الحالة المسجلة، لأننا غيرنا معنى المدخل قبل أن يصل إليه.
| الظرف الافتراضي | المعلومة المتاحة | ما لا نستنتجه |
|---|---|---|
| أ | سجل الفاحص true | لا نثبت صحة الفحص من القيمة وحدها |
| ب | سجل الفاحص false | لا تعني أن النتيجة غائبة |
| ج | النتيجة لم تصل | لا نحوله تلقائيا إلى false |
هل null هي الحقل الغائب؟
تؤكد وثائق JSON Schema أن null لا تكافئ غياب الخاصية. [2]
في تصميم مثالنا، يمكن الاتفاق على null بمعنى «الفحص لم يحسم»، وعلى غياب الخاصية بمعنى «هذه الرسالة لا تتضمن نتيجة». هذا اقتراح محلي للتوثيق، وليس المعنى المفروض على جميع الأنظمة. إذا كان مخطط الحقل يقبل boolean فقط، فلا نضيف null إليه دون تعديل العقد المتفق عليه. نحفظ أيضا سبب عدم المعرفة متى كان متاحا.
ما قرار التحويل قبل بناء المدخلات؟
نقترح بطاقة قصيرة تتضمن سؤال الحقل ونوعه والقيم المقبولة ومعنى المجهول. إذا وصل النص "false"، لا نعامله كقيمة منطقية بمجرد النظر إلى الحروف، بل نطبق قاعدة تحويل نصي معلنة أو نسجل عدم المطابقة. وإذا وصل رقم، نرجع إلى تعريف المصدر.
نحتفظ بالقيمة الخام والنتيجة المحولة وسبب القرار في مثال الإعداد. ثم نراجع حالات true وfalse والنص وnull والغياب كل واحدة على حدة. هذه مراجعة مقترحة، ولم ننفذ برنامجا على بيانات مستخدم؛ نجاح التحويل التقني وحده لا يثبت أن الفاحص وصف الظرف بدقة.
المصادر ومتابعة القراءة
- JSON Schema: boolean (يفتح في نافذة جديدة)json-schema.org
- JSON Schema: null (يفتح في نافذة جديدة)json-schema.org
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
