مقارنة JSON بنيويًا
قارن بنيتَي JSON واعرض الإضافات والحذف والتغييرات بمسارات واضحة، مع حفظ كتابة الأعداد دون تقريب.
طريقة الاستخدام
ألصق JSON السابق واللاحق في الحقلين ثم ابدأ المقارنة. راجع نوع التغيير ومساره ونص JSON قبل التغيير وبعده، وانتقل بين صفحات المعاينة عند الحاجة. انسخ التقرير كاملًا أو نزّله باسم json-diff.json باختيارك. تعديل المدخل يلغي النتيجة السابقة؛ لا يُستبدل نص المدخل بالتقرير.
قبل: {"n":1,"a":[1,2]} وبعد: {"a":[2,1],"n":1.0}. تظهر ثلاثة تغييرات: /n من النص 1 إلى النص 1.0، و/a/0 من 1 إلى 2، و/a/1 من 2 إلى 1. اختلاف ترتيب المفتاحين وحده لا يضيف تغييرًا. المفتاح a/b~c يظهر في المسار /a~1b~0c.
حدود الدعم
ترتيب مفاتيح الكائن غير مؤثر، لكن المصفوفات تُقارن حسب الفهرس؛ لا استنتاج لنقل العناصر أو مطابقة مجموعات. الأعداد تُقارن بكتابتها الأصلية: 1 و1.0 و1e0 مختلفة، ولا تُحوّل إلى Number. تُفك سلاسل JSON للمقارنة دون تطبيع Unicode. إضافة فرع أو حذفه أو تغيير نوعه يظهر صفًا واحدًا بمحتواه الكامل. المسار الفارغ هو الجذر، وتُهرب ~ إلى ~0 و/ إلى ~1 في JSON Pointer. حقلا before وafter في التقرير نصوص تحمل JSON مدمجًا، وليسا قيمًا عددية مقربة؛ يُحذف الحقل عند غياب ذلك الجانب، أما قيمة JSON null فتُمثل بالنص "null". التقرير يصف الفروق وليس ملف JSON Patch لتنفيذ تعديلات. تجري المعالجة داخل المتصفح دون تنفيذ محتوى JSON أو رفعه أو حفظه أو نسخه تلقائيًا.
أسئلة شائعة
هل تعني نتيجة متساوية أن النصين متطابقان حرفيًا؟
لا؛ قد تختلف المسافات خارج السلاسل وترتيب مفاتيح الكائن وطريقة تهريب المحارف مع بقاء القيم متساوية حسب هذه السياسة. تظهر عندها قائمة changes فارغة، ويمكن نسخ التقرير أو تنزيله. في المقابل، اختلاف كتابة العدد أو ترتيب عناصر المصفوفة يعد فرقًا حتى لو بدا المعنى متقاربًا.