لماذا ترتيب مفاتيح JSON؟
كائنات JSON غير مُرتَّبة تقنياً — تنص المواصفة (ECMA-404) على أن التطبيقات غير مُلزمة بالحفاظ على ترتيب المفاتيح — لكن عملياً معظم المُحلِّلين والمُسلسِلين يحفظون ترتيب الإدراج. هذا يعني أن كائنَين بمفاتيح وقيم متطابقة بترتيبات مختلفة متكافئان دلالياً لكن مختلفان نصياً، ما يخلق ضوضاء في فروق التحكم بالنسخ.
ترتيب المفاتيح أبجدياً قبل إيداع ملف إعدادات أو مخطط في التحكم بالمصدر يحوّل تغيير إعادة ترتيب بلا معنى إلى بنية نظيفة ومتوقعة.
ترتيب المفاتيح خطوة نحو JSON قانوني — تسلسل حتمي تُنتج فيه وثيقتان متطابقتان منطقياً دائماً تسلسل البايتات ذاته. يُفيد JSON القانوني في التوقيعات التشفيرية والتخزين المؤقت ومقاييس الاختبار الحتمية.
الترتيب العميق مقابل الترتيب السطحي
الترتيب السطحي يُعيد ترتيب مفاتيح المستوى الأعلى فحسب لكائن JSON. الترتيب العميق (المتكرر) يُعيد ترتيب المفاتيح في كل مستوى تداخل — كائنات متداخلة وكائنات داخل مصفوفات. تُجري أداتنا ترتيباً عميقاً افتراضياً.
عناصر المصفوفة لا تُعاد ترتيبها أبداً. المصفوفات مجموعات مُرتَّبة وإعادة ترتيب عناصرها ستُغير دلالة البيانات. الترتيب يُطبَّق فقط على مفاتيح الكائنات لا على محتوى المصفوفات.
المفاتيح الرقمية (التي تكون أسماؤها أعداداً صحيحة) تُرتَّب أبجدياً لا رقمياً. هذا يعني "10" يأتي قبل "9" في الترتيب الأبجدي.
حساسية حالة الأحرف والترتيب المحلي
افتراضياً، تُرتَّب المفاتيح باستخدام ترتيب نقطة الكود Unicode القياسية، وهو حساس لحالة الأحرف: الأحرف الكبيرة (A–Z) تأتي قبل جميع الأحرف الصغيرة (a–z). هذا يعني "Zebra" يُرتَّب قبل "apple".
تقدم أداتنا كلا الوضعين. الترتيب غير الحساس لحالة الأحرف أكثر بداهةً للقراء البشريين عادةً وهو الخيار الأفضل لملفات الإعدادات التي تخلط الحالات.
الترتيب المحلي الخاص بالمنطقة لا يُطبَّق افتراضياً لأن مفاتيح JSON عادةً معرّفات ASCII.