كيفية الاستخدام
- ألصق JSON الأصلي على اليسار وJSON المعدَّل على اليمين، أو جرّب المثال.
- اختر طريقة مقارنة المصفوفات: حسب الموضع، أو بمطابقة العناصر بحيث يُبلَّغ عن العنصر المُدرج مرة واحدة.
- اطّلع على الاختلافات في قائمة أو جنبًا إلى جنب. لكل اختلاف مسار من الجذر ($).
- انسخ التقرير للصقه في تذكرة أو مراجعة كود.
كيف تعمل الأداة
يُحلَّل المستندان ويُقارنان كبيانات لا كنص. تُقارَن الكائنات مفتاحًا بمفتاح، لذا لا يؤثر ترتيب المفاتيح ولا المسافات البيضاء أو الإزاحة. تُقارَن الأعداد بالقيمة، لذا 1 و1.0 متساويان.
لكل اختلاف مسار يُكتب مثل تعبير JSONPath: $ هو الجذر، و.name خاصية، و[2] فهرس مصفوفة، وتُوضَع المفاتيح غير البسيطة بين علامتي اقتباس مثل $["first-name"]. يُبلَّغ عن أربعة أنواع من الاختلافات: مضاف (في الجانب الأيمن فقط)، ومحذوف (في الجانب الأيسر فقط)، ومتغير (النوع نفسه وقيمة مختلفة)، وتغير النوع (على سبيل المثال تحوَّل الرقم 44.9 إلى السلسلة النصية "44.90" أو أصبحت القيمة null). عند إضافة كائن أو مصفوفة كاملة أو حذفها، يُبلَّغ عن ذلك مرة واحدة في مساره نفسه بدلًا من مرة لكل حقل.
تُقارَن المصفوفات افتراضيًا حسب الموضع: العنصر 0 مع العنصر 0، والعنصر 1 مع العنصر 1. إذا أُدرج عنصر في البداية، يبدو كل عنصر لاحق متغيرًا. خيار “مطابقة العناصر المنقولة” يطابق المصفوفتين أولًا باستخدام أطول تسلسل جزئي مشترك من العناصر المتساوية، بحيث يُبلَّغ عن الإدراج أو الحذف مرة واحدة فقط وتُقرَن بقية العناصر. تستخدم العناصر المضافة فهرسها في اليمين، والعناصر المحذوفة فهرسها في اليسار. تُتجاهل المطابقة للمصفوفات الكبيرة جدًا (أكثر من نحو مليونَي زوج من العناصر)، وتُقارَن حينئذٍ حسب الموضع.
تُرتَّب مسارات المفاتيح في القائمة أبجديًا داخل كل كائن. يُعرض حتى 2000 اختلاف؛ ويحتوي التقرير المنسوخ دائمًا على جميعها.
أمثلة
التحقق من تغيير في API
قارِن استجابة الأمس واليوم للطلب نفسه. يُظهر الاختلاف أن قيمة $.status تغيّرت من "pending" إلى "shipped"، وتغيّر نوع $.total من رقم إلى سلسلة نصية، وحُذف $.coupon وأُضيف $.customer.phone.
انحراف الإعدادات
ألصق ملف إعدادات JSON من بيئة الاختبار ومن بيئة الإنتاج. نظرًا لتجاهل ترتيب المفاتيح، تظهر الاختلافات الفعلية فقط مثل $.cache.ttl 300 → 60، حتى لو حُفظ الملفان بأداتين مختلفتين.
قوائم تحتوي عنصرًا مُدرجًا
أُضيف عنصر جديد في بداية قائمة منتجات. عند المقارنة حسب الموضع يظهر كل منتج وكأنه تغيّر؛ أما مع «مطابقة العناصر المنقولة» فتظهر النتيجة «Added $[0]» فقط.
الأسئلة الشائعة
ما الفرق بين هذه الأداة ومقارنة النصوص؟
مقارنة النصوص تقارن الأسطر، لذا يظهر إعادة ترتيب المفاتيح أو تغيير التنسيق كأنه تغيير. تقارن هذه الأداة البيانات بعد تحليلها، فلا يُبلَّغ إلا عن اختلافات القيم والأنواع والبنية.
لماذا تظهر المصفوفة تغييرات كثيرة بعد إدراج عنصر واحد؟
في وضع «حسب الموضع»، تُقارن العناصر عند نفس الفهرس، وأي إدراج يزيح كل عنصر لاحق. بدّل إلى «مطابقة العناصر المنقولة» لمحاذاة العناصر المتساوية أولًا.
هل تُعامل «1» و1 على أنهما متساويان؟
لا؛ فالأولى نص والثانية رقم، لذا يُبلَّغ عن الاختلاف كتغيير في النوع. القيم من النوع نفسه تُقارن بدقة.
هل يمكنني مقارنة ملفات كبيرة جدًا؟
تعمل الملفات التي يصل حجمها إلى بضعة ميغابايت، لكن كل شيء يُعالج في ذاكرة متصفحك، لذا قد تكون المستندات الكبيرة جدًا بطيئة على الهواتف.
الخصوصية
تُحلَّل المستندان وتُقارنان في متصفحك فقط. لا يُرفع أي شيء أو يُخزَّن أو يُضمَّن في التحليلات.