مقارنة JSON: قارن كائنات JSON
الصق مستندي JSON لترى بالضبط ما الذي تغيّر. يُدرج كل اختلاف بمساره، مثل $.users[2].email، ولا يسبب التنسيق أو ترتيب المفاتيح إنذارات كاذبة أبدًا.
يعمل في متصفحكبدون تسجيللا يُرفع شيء
المسارات المتغيرة
| التغيير | المسار | القيمة القديمة | القيمة الجديدة |
|---|
طريقة استخدام مقارنة JSON
- الصق JSON الأصلي على اليمين وJSON المعدَّل على اليسار، أو افتح ملفين.
- تُعرض أخطاء الصياغة أسفل كل مربع مع السطر والعمود، لتتمكن من إصلاحها بسرعة.
- اقرأ جدول المسارات المتغيرة: يوضح كل صف ما إذا كانت القيمة مضافة أو محذوفة أو معدَّلة، مع القيمتين القديمة والجديدة.
- فعّل تجاهل ترتيب المصفوفات عندما تكون القوائم مجموعات، مثل الوسوم أو الصلاحيات.
- مرّر إلى العرض جنبًا إلى جنب لرؤية التغييرات في سياقها، أو انسخ قائمة التغييرات بصيغة JSON.
لماذا تتفوق مقارنة JSON البنيوية على مقارنة النصوص
تقارن مقارنة النصوص العادية الأحرف والأسطر، لذا قد يبدو ملفا JSON يحملان البيانات نفسها مختلفين تمامًا إذا كان أحدهما مصغَّرًا أو بمسافات بادئة مختلفة أو بمفاتيح بترتيب آخر. تحلّل هذه الأداة المستندين أولًا ثم تقارن البيانات: تُقارن الكائنات مفتاحًا بمفتاح بغض النظر عن الترتيب، وتُقارن الأعداد والسلاسل النصية والقيم المنطقية وnull بالقيمة. ولا يُبلَّغ إلا عن التغييرات الحقيقية.
كيف يُبلَّغ عن التغييرات
يحصل كل اختلاف على موقع بأسلوب JSONPath، مثل $.owner.email أو $.items[3].price، وعلى أحد ثلاثة أنواع:
- مُضاف: المفتاح أو عنصر المصفوفة موجود فقط في JSON المعدَّل.
- محذوف: موجود فقط في JSON الأصلي.
- مُعدَّل: موجود في كليهما لكن القيمة مختلفة، بما في ذلك تغيّر النوع مثل سلسلة نصية أصبحت عددًا.
تُحاذى المصفوفات بخوارزمية أطول تسلسل جزئي مشترك، لذا يُبلَّغ عن إدراج عنصر واحد في بداية قائمة كإضافة واحدة بدلًا من تمييز كل العناصر التالية كمعدَّلة.
تجاهل ترتيب المصفوفات
تُرجع كثير من واجهات API قوائم لا معنى لترتيبها، مثل الأدوار أو الوسوم أو المعرّفات. عند تفعيل تجاهل ترتيب المصفوفات، تُقارن المصفوفات كمجموعات: لا يُحسب العنصر مضافًا أو محذوفًا إلا إذا لم يكن له نظير مساوٍ في الجانب الآخر. ثم يرتب العرض جنبًا إلى جنب عناصر المصفوفات لتتحاذى القوائم المتساوية.
استخدامات نموذجية
قارن استجابات API بين بيئتي staging والإنتاج، وتحقق مما غيّرته عملية ترحيل في ملف إعداد، وراجع الفروقات بين ملفي package.json أو tsconfig، وصحّح اختبارات snapshot.
الأسئلة الشائعة
هل يهم ترتيب المفاتيح عند مقارنة JSON؟
{"a":1,"b":2} و{"b":2,"a":1} متساويين. أما ترتيب المصفوفات فيهم افتراضيًا لأن المصفوفات مرتبة، لكن يمكنك إيقاف ذلك بخيار تجاهل ترتيب المصفوفات.هل يُرفع JSON الخاص بي إلى خادم؟
ماذا تعني المسارات مثل $.users[2].email؟
$ هو جذر المستند، و.users مفتاح، و[2] هو العنصر الثالث في مصفوفة (تبدأ الفهارس من 0). تُكتب المفاتيح التي تحتوي على مسافات أو أحرف خاصة بين أقواس، مثل $["first name"].هل 1 يساوي 1.0؟
1 و"1"، فمختلفان ويُبلَّغ عنهما كمعدَّلين.