مقارنة JSON
الصق مستندَي JSON لتظهر الفروق حسب المسار فورًا — بلا زر وبلا رفع.
الفروق0مسارات مضافة0قيم متغيرة0مسارات محذوفة
طريقة الاستخدام
- الصق JSON القديم في «JSON الأصلي» والجديد في «JSON المقارن» — يظهر كل مسار مضاف أو محذوف أو متغيّر أثناء الكتابة، بلا زر للمقارنة.
- ترتيب المفاتيح، و1 مقابل 1.0، و1e0 مقابل 1، و\u00e9 مقابل é ليست فروقًا: المقارنة بنيوية. لمراجعة التنسيق أو ترتيب المفاتيح استخدم أداة مقارنة النصوص.
- استخدم «نسخ الفروق» لأخذ القائمة الكاملة: كل سطر يبدأ بـ + أو - أو ~ ثم المسار والقيمة الكاملة، جاهزًا للتذكرة أو البريد.
مثال
المستندان
【الأصل】
{"رقم":"A-2026-001","العميل":{"الاسم":"ليلى","المدينة":"دبي"},"المبلغ":1299.5,"مدفوع":false}
【المقارن】
{"رقم":"A-2026-001","العميل":{"الاسم":"ليلى","المدينة":"أبوظبي"},"المبلغ":1399.0,"مدفوع":true,"قسيمة":"WELCOME10"}الفروق
+ $.قسيمة "WELCOME10" ~ $.العميل.المدينة "دبي" → "أبوظبي" ~ $.المبلغ 1299.5 → 1399.0 ~ $.مدفوع false → true (+1 ~3 −0)
سطرا 【الأصل】/【المقارن】 عنوانان للمثال فقط؛ في الاستخدام الحقيقي يوضع المستندان في مربعَي الإدخال. لا تُعرض إلا القيم المتغيرة فعلًا: رقم الطلب واسم العميل لم يتغيّرا، وترتيب المفاتيح لا يُعدّ فرقًا أبدًا.
القواعد والحدود والقيود المعروفة
- هذه مقارنة بنيوية لا مقارنة نصية: ترتيب مفاتيح الكائن غير مهم؛ و1 و1.0 و1e0 هي القيمة نفسها؛ و"\u00e9" و"é" هما النص نفسه. لمراجعة التنسيق أو ترتيب المفاتيح استخدم أداة مقارنة النصوص.
- تُقارن الأرقام كأعداد عشرية دقيقة، دون المرور عبر JavaScript Number: 9007199254740993 لا يفقد رقمًا، و1e400 لا يصبح Infinity؛ وتعرض القائمة الرقم كما كتبته.
- تُقارن النصوص بقيمتها بعد فك الهروب وتُعرض بصيغة JSON قياسية؛ والمفاتيح المكرّرة تأخذ القيمة الأخيرة كما في JSON.parse مع تنبيه بعدد التكرارات.
- المصفوفات مرتبة: تُحاذى الإضافات والحذوفات، فإضافة عنصر في البداية سطر «+» واحد وليست تغييرًا لكل ما يليه. النقل يظهر كحذف وإضافة، ولا يوجد خيار «تجاهل ترتيب المصفوفة».
- إضافة أو حذف شجرة كاملة تُحتسب مسارًا واحدًا. القيم الطويلة تُعرض على الشاشة كـ«كائن · N مفاتيح» أو «مصفوفة · N عناصر»، بينما يحتوي «نسخ الفروق» على القيمة الكاملة دائمًا.
- «نسخ الفروق» قائمة نصية (+ / - / ~ والمسار والقيمة الكاملة) وليست JSON Patch. إدراج المصفوفة وحذفها يزيح الفهارس اللاحقة، لذا قد يفشل JSON Patch المبسّط؛ لا ندّعي المعيار.
- المسارات بصيغة $.a.b[0]. العناصر المحذوفة تشير إلى فهرسها القديم؛ والمضافة والمتغيرة تشير إلى المستند الجديد.
- الحدود: عند تجاوز 200,000 محرف معًا تُحدَّث النتيجة بعد نحو 0.6 ثانية من التوقف؛ ومستند واحد فوق 1,000,000 محرف أو تداخل فوق 256 مستوى يعطي خطأً بلا اقتطاع. المصفوفات فوق حدّ المحاذاة تُقارن بالفهرس مع تنبيه؛ ويُعرض 400 تغيير كحد أقصى، أما النسخ فيعطي القائمة الكاملة.
- لا رفع ملفات، ولا تحميل من URL، ولا JSON Schema أو JSONPath، ولا سجل أو روابط مشاركة. كل شيء يجري في متصفحك: لا رفع ولا تخزين.
- في الصفحات الصينية واليابانية والكورية يكون «توافق علامات الترقيم بعرض كامل» مفعّلًا افتراضيًا: تُحوَّل علامات الترقيم خارج النصوص فقط، ويبقى محتوى النصوص كما هو.
أدوات تطوير ذات صلة
ما يحتاجه الناس عادة بعد مقارنة مستندَي JSON.