أداة سريعة وخاصة للتحقق من الفروق في JSON
عند العمل مع هياكل البيانات المعقدة، قد يكون اكتشاف قيمة معدلة أو مفتاح مفقود أمراً محبطاً للغاية. صُممت أداة مقارنة JSON هذه لتحليل وإبراز الفروق الدقيقة بين مجموعتي بيانات JSON بشكل فوري. بدلاً من قراءة آلاف الأسطر البرمجية، ستحصل على تقرير واضح ومنظم يوضح ما تم تغييره بالضبط.
نظراً لأن هذه الأداة تعمل بالكامل داخل متصفحك، فهي توفر طريقة خاصة تماماً لإجراء مقارنة JSON عبر الإنترنت. لا يتم رفع بياناتك مطلقاً إلى أي خادم أو تخزينها في أي قاعدة بيانات. يمكنك بأمان لصق استجابات API الخاصة، أو بيانات العملاء، أو إعدادات البيئة الحساسة دون أي خطر لتسريب البيانات.
كيف تعمل المقارنة العميقة لملفات JSON
إذا كنت تريد مقارنة ملفي JSON، فإن استخدام أداة فحص الاختلافات العادية للنصوص غالباً ما يؤدي إلى اكتشاف اختلافات غير حقيقية. تقارن أدوات النصوص العادية البيانات سطراً بسطر. فإذا كان ملف JSON المُعدّل يحتوي على مسافات بادئة مختلفة، أو إذا كانت المفاتيح داخل الكائن بترتيب مختلف، فإن أداة مقارنة النصوص ستعتبر المقطع بأكمله مُعدّلاً.
تعمل هذه الأداة بشكل مختلف؛ فهي تحلل النص إلى كائنات JavaScript فعلية وتُجري مقارنة عميقة وعودية لهيكل البيانات نفسه. كما تتجاهل المسافات البيضاء، والمسافات البادئة، وترتيب المفاتيح. فإذا أصبح {"status": "ok", "code": 200} بالشكل {"code": 200, "status": "ok"}، ستعتبرهما الأداة متطابقين تماماً.
وعندما تعثر الأداة على اختلاف، فإنها تُنشئ مساراً دقيقاً للتغيير باستخدام صيغة النقطة والأقواس المربعة القياسية. على سبيل المثال، إذا تغير الوسم الثالث في مصفوفة، ستوجهك الأداة مباشرة إلى tags[2] بدلاً من مجرد تظليل سطر عشوائي في ملف ضخم.
التعامل مع المصفوفات: المقارنة الصارمة مقابل تجاهل الترتيب
من أكثر التحديات شيوعًا في أداة مقارنة JSON هو التعامل مع المصفوفات. في بعض الأحيان، يكون ترتيب العناصر في المصفوفة مهمًا للغاية. وفي أحيان أخرى، تكون المصفوفة مجرد قائمة غير مرتبة من العناصر، وكل ما يهمك هو تطابق المحتوى.
افتراضيًا، تقارن هذه الأداة المصفوفات بشكل صارم بناءً على الفهرس. فهي تتحقق مما إذا كان العنصر الأول في النسخة الأصلية يطابق العنصر الأول في النسخة المعدلة، وهكذا.
إذا حددت خيار تجاهل ترتيب المصفوفة، سيتغير سلوك الأداة. حيث تقوم بتسلسل محتويات كلتا المصفوفتين وفرزها أبجديًا قبل مقارنتها. هذا يعني أنه إذا كانت مصفوفتك الأصلية هي ["apple", "banana"] والمعدلة هي ["banana", "apple"]، فلن تبلغ الأداة عن أي تغييرات. هذه الميزة لا تقدر بثمن عند مقارنة استجابات واجهة برمجة التطبيقات (API) من قواعد البيانات التي لا تضمن ترتيبًا معينًا.
حالات الاستخدام الشائعة
تصحيح أخطاء استجابات API. عندما تتعطل نقطة نهاية API فجأة، فإن مقارنة الاستجابة القديمة الصالحة بالاستجابة الجديدة الخاطئة هي أسرع طريقة للعثور على سبب المشكلة. الصق كلا النصين لترى فوراً ما إذا تمت إعادة تسمية مفتاح، أو تغير نوع البيانات من سلسلة نصية إلى عدد صحيح، أو حُذف كائن متداخل.
مراجعة ملفات التكوين. تعتمد التطبيقات الحديثة بشكل كبير على ملفات تكوين JSON، مثل package.json أو tsconfig.json أو قوالب النشر السحابي. قبل اعتماد أي تغيير، استخدم هذه الأداة للتحقق بدقة من التبعيات التي تم تحديثها أو الإعدادات التي تم تعديلها.
تدقيق سجلات قواعد البيانات. تخزن قواعد بيانات المستندات مثل MongoDB السجلات في هياكل بيانات مشابهة لـ JSON. إذا كنت بحاجة إلى تدقيق كيفية تغير ملف شخصي لمستخدم أو مستند معين بمرور الوقت، فإن مقارنة نسخة JSON القديمة المُصدَّرة مع الحالة الحالية توفر مسار تدقيق واضح للحقول المضافة والمحذوفة والمعدلة.
فهم النتائج
بمجرد لصق كود JSON صحيح في كلتا اللوحتين، تُنشئ الأداة ملخصاً وقائمة مفصلة بالتغييرات:
- مضاف (+): المفاتيح أو عناصر المصفوفة الموجودة في ملف JSON المُعدَّل وغير الموجودة في الملف الأصلي. يتم تمييزها باللون الأخضر.
- محذوف (−): المفاتيح أو عناصر المصفوفة الموجودة في ملف JSON الأصلي والمفقودة في النسخة المُعدَّلة. يتم تمييزها باللون الأحمر.
- مُعدَّل (~): المفاتيح الموجودة في كلتا النسختين ولكن بقيم مختلفة (على سبيل المثال، تم تحديث نص، أو تغيرت قيمة منطقية من
trueإلىfalse). يتم تمييزها باللون الأصفر، مع عرض القيمتين القديمة والجديدة.
إذا كنت بحاجة إلى مشاركة نتائج المقارنة مع زميل أو لصقها في تقرير أخطاء، يمكنك استخدام زر نسخ. يقوم هذا الزر بنسخ ملخص واضح بنص عادي لكل مسار مُعدَّل والقيم المرتبطة به.
لمزيد من معالجة البيانات، قد ترغب أولاً في تنسيق البيانات غير المرتبة باستخدام مُنسّق JSON، أو بمجرد الانتهاء من هيكل JSON الخاص بك، يمكنك إنشاء تعريفات الأنواع باستخدام محول JSON إلى TypeScript.