أداة مقارنة JSON

الصق مستندي JSON وشاهد بالضبط أي مفاتيح أُضيفت أو حُذفت أو تغيّرت بينهما.

كيف يعمل هذا

يُحلَّل الجانبان كـ JSON، ثم يُقارَنان مفتاحًا بمفتاح وفهرسًا بفهرس. المفاتيح الموجودة في اليمين فقط هي إضافات، والموجودة في اليسار فقط هي حذوفات، والمفاتيح الموجودة في كلا الجانبين بقيم مختلفة هي تغييرات. ترتيب مفاتيح الكائن لا يهم، القيم فقط هي المهمة.

كيف يعمل

يمرّ كلا الجانبين أولًا عبر JSON.parse، لذا إذا لم يكن أحدهما JSON صالحًا، تحصل على رسالة خطأ المحلِّل نفسها تشير إلى المشكلة بدلًا من فرق عديم الفائدة. تمرّ المقارنة بعدها عبر البنيتين المحلَّلتين بشكل تكراري: بالنسبة للكائنات، تأخذ اتحاد مجموعتي المفاتيح وتتكرر في كل مفتاح، وبالنسبة للمصفوفات، تقارن فهرسًا بفهرس، وتُعتبَر القيم الطرفية متساوية فقط إذا تسلسلت بشكل متطابق. يُصدَر كل فرق كمسار مثل user.address[1].zip موسومًا بأنه مُضاف أو محذوف أو مُغيَّر، ثم يُلخَّص في أعداد.

بما أن الفرق يعمل على قيم محلَّلة وليس نصًا، فإن التنسيق غير مرئي: المسافات البادئة، وترتيب المفاتيح، واختلافات المسافات البيضاء لا تُنتِج أي ضجيج، وهذا هو بيت القصيد مقارنة بفرق نصي قائم على الأسطر. المفاضلة التي يجب فهمها هي محاذاة المصفوفات. إنها موضعية، لذا فإن إدراج عنصر واحد في مقدمة مصفوفة طويلة يُبلِغ عن كل فهرس تالٍ بأنه «مُغيَّر» بالإضافة إلى إضافة واحدة في النهاية. عندما ترى جدارًا من الإدخالات المُغيَّرة التي تبدو جميعها منزاحة بواحد، اقرأها على أنها «شيء أُدرِج أو حُذِف مبكرًا في هذه المصفوفة»، وليس كعشرات التعديلات المستقلة.

يحدث التحليل والمقارنة بالكامل في جافاسكريبت هذه الصفحة. افتح لسان Network في أدوات المطوّر واضغط مقارنة: لا يحمل أي طلب JSON الخاص بك، لذا تبقى استجابات API وملفات الإعدادات التي تحتوي أسرارًا على جهازك.