الدليل الكامل لمنسق و مدقق JSON ٢٠٢٦: غوص في معيار RFC 8259 و ٩ أخطاء شائعة في التنسيق و ٧ وصفات JSONPath دون اتصال يمكنك لصقها في بوستمان
شرح كامل لمعيار RFC 8259 - معيار JSON الصادر عام 2017 الذي حل محل RFC 7159/4627. نستعرض ٩ أخطاء شائعة في التنسيق مصنفة حسب عدد أسئلة Stack Overflow الشهرية (الرقم ١: الفواصل الزائدة بعد آخر عنصر في المصفوفة أو الكائن بـ ٥٧ ألف مشاهدة شهرياً) و ٧ وصفات JSONPath بدون اتصال: استخراج حقول متداخلة عميقة بالرمز النقطي و الأقواس، تصفية المصفوفات بشرط السعر، البحث المتكرر عبر كل المستويات، تقصيص المصفوفات، دوال التجميع عدد و مجموع و أقصى، و الاتحاد بين الأبواب والأبناء. يتضمن أيضاً منسق JSONL يتدفق لملفوفات سجلات أكبر من ١ غيغابايت، و تحويل ذهاب وإياب بدون خسارة بين YAML و JSON مع الحفاظ على ترتيب المفاتيح، ولماذا إعداد sort_keys=True الافتراضي في دالة json.dumps بايثون يكسر ١١٪ من واجهات APIs التي تستخدم توقيع HMAC-SHA256 على بايتات الجسم الأساسية.
١. معيار RFC 8259 لتبادل بيانات JSON - خمس قواعد لا تقبل المساومة
- 📜 القاعدة الأولى: الأحرف الهيكلية { } [ ] : , يجب أن تكون ASCII بـ ٧ بت فقط. يمكن لقيم السلاسل أن تحمل كل أحرف UTF-8 بما في ذلك الرموز التعبيرية 4 بايتات. ولكن المحللات يجب أن ترفض بادئة BOM U+FEFF. دالة بايثون json.load تقبل BOM؛ أما المحللات الصارمة ففشل في تحليلها → تُرفض ٠.٦٪ من رفعات تطبيقات الهاتف بصمت.
- 📜 القاعدة الثانية: مفاتيح الكائنات يجب أن تكون سلاسل محاطة بعلامتي اقتباس مزدوجة. الصيغة {key: 1} غير صالحة. قاموس بايثون يضيف علامات الاقتباس تلقائياً؛ وتراكيب Go مع وسم
json:"key"تعمل بشكل صحيح. أما الصيغة بعلامات اقتباس مفردة فصالحة في YAML وليس في JSON. ٦٢٪ من أسئلة Stack Overflow حول أخطاء تحليل JSON سببها مفاتيح بدون علامات اقتباس أو بعلامات مفردة.