أداة ترتيب مفاتيح JSON
رتّب مفاتيح كل كائن في مستند JSON أبجدياً وبشكل متكرر — يجعل الفروقات (diff) نظيفة وملفات الإعدادات سهلة القراءة.
915 مشاهدة
كيف يعمل
ألصق JSON وستعود مفاتيح كل كائن مرتبة أبجديًا. الجزء المهم هو أن هذا الترتيب متكرر (recursive): لا تكتفي الأداة بإعادة ترتيب مفاتيح الكائن في المستوى الأعلى ثم تتوقف — بل تدخل إلى كل كائن متداخل، عند كل عمق، وترتب كلاً منها أبجديًا بشكل مستقل. الاقتصار على ترتيب المستوى الخارجي فقط سيترك البنية الداخلية للمستند دون تغيير، ما يُفرغ العملية من جدواها في أي شيء أكثر تعقيدًا من كائن مسطّح؛ ملفات JSON في العالم الحقيقي (استجابات API، ملفات الإعدادات) تكاد تكون دائمًا متداخلة على عدة مستويات.
على سبيل المثال، بالنظر إلى {"user":{"zip":"1","name":"A"},"active":true}، لا تكتفي الأداة بنقل active إلى ما قبل user في الأعلى — بل تصل أيضًا إلى داخل كائن user وتُبدّل name إلى ما قبل zip، لتنتج {"active":true,"user":{"name":"A","zip":"1"}}. تُترك المصفوفات دون مساس: يُحافَظ على ترتيب عناصرها تمامًا كما هو، لأن ترتيب المصفوفة له دلالة معنوية (المصفوفات مرتبة بحكم تعريفها)، في حين أن ترتيب مفاتيح الكائن، وفقًا لمواصفة JSON، ليس كذلك.
معلومة مفيدة
الاستخدام الرئيسي هو جعل الفروقات (diffs) ومقارنات التحكم بالإصدارات ذات معنى. مستندا JSON يحملان بيانات متطابقة لكن مُسلسَلين بمفاتيح بترتيب مختلف سينتجان فرقًا نصيًا ضخمًا وصاخبًا عند مقارنتهما مباشرة — يبدو كل سطر مختلفًا رغم أن شيئًا لم يتغير فعليًا. تمرير كليهما عبر هذه الأداة أولاً يُزيل هذه الضوضاء: فبوجود المفاتيح بالترتيب الأبجدي نفسه، لا يُظهر الفرق النصي العادي إلا التغييرات الحقيقية في المحتوى، لا إعادة الترتيب العرضية. وهي مفيدة بالقدر نفسه لتحرير ملفات الإعدادات يدويًا أو لجعل استجابة API غير مألوفة أسهل في القراءة.
الأسئلة الشائعة
هل يغيّر هذا البيانات أم الترتيب فقط؟
يتغيّر ترتيب المفاتيح فقط — تبقى القيم والتداخل ومحتويات المصفوفات دون مساس. كائنات JSON غير مرتبة حسب المواصفة، لذا فهذا تحويل آمن دائماً ولا يكسر شيئاً.
هل ينطبق الترتيب على الكائنات المتداخلة أم على المستوى الأعلى فقط؟
إنه متكرر بالكامل — يحصل كل كائن، عند أي عمق تداخل، على ترتيب أبجدي مستقل لمفاتيحه الخاصة، وليس الكائن الخارجي فقط. الاقتصار على ترتيب المستوى الأعلى سيترك الكائنات الداخلية على ترتيبها الأصلي، وربما غير المتسق.
ماذا لو كان JSON الخاص بي غير صالح؟
ستحصل على خطأ تحليل واضح بدلاً من فشل صامت — أصلح المشكلة النحوية المشار إليها وحاول مجدداً.
هل يرتّب المصفوفات أيضاً؟
لا — يُحافَظ على ترتيب عناصر المصفوفة تماماً كما هو، لأن المصفوفات مرتبة بحكم تعريفها وإعادة ترتيبها سيغيّر المعنى. تُرتَّب أبجدياً مفاتيح الكائنات فقط.
لماذا قد أرتّب مفاتيح JSON قبل مقارنة ملفين؟
أدوات مقارنة النصوص العادية تقارن سطرًا بسطر، لذا فإن ملفَي JSON بنفس البيانات لكن بمفاتيح مرتبة بترتيب مختلف يبدوان مختلفين تمامًا تقريبًا في المقارنة رغم أن لا شيء ذا معنى قد تغيّر. ترتيب مفاتيح الملفين بالطريقة نفسها يزيل هذه الضوضاء، ويترك مقارنة تعكس فقط التغييرات الحقيقية في المحتوى.
أدوات مشابهة
الإبلاغ عن مشكلة
أداة ترتيب مفاتيح JSON
التعليقات
لا توجد تعليقات بعد — كن أول من يكتب تعليقًا!