ما هو JSON؟
JSON (JavaScript Object Notation) صيغة نصية للبيانات المهيكلة تتكون من كائنات ومصفوفات ونصوص وأرقام وقيم منطقية وnull. يعرّفها المعياران RFC 8259 وECMA-404، وهي مستقلة عن لغة البرمجة، وتُعدّ الصيغة الافتراضية لواجهات الويب لأنها مضغوطة وقابلة للقراءة وسهلة التحليل.
كيفية استخدام مقارنة JSON
- الصق المستند الأصلي في حقل «الأصلي» (Original / left) والمستند المعدّل في حقل «المعدّل» (Modified / right).
- فعّل خيار «تجاهل ترتيب المصفوفة» (Ignore array order) إذا كان موضع العناصر في المصفوفة لا يهم في بياناتك.
- اضغط «مقارنة» لعرض الملخص وجدول الاختلافات وعرض الأسطر.
- نزّل الجدول عندما تحتاج إلى إرفاق التغييرات بتذكرة.
«تجاهل ترتيب المصفوفة» غير مفعّلالافتراضي
تُقارَن العناصر حسب الفهرس: [0] مع [0]، و[1] مع [1]…
- صفوف
featuresفي «الاختلافات»: - 3
- الملخص: المُعدَّل:
- 5
$.features[0] changed "cart" → "coupons"$.features[1] changed "coupons" → "cart"$.features[2] changed "wallet" → "gift-cards"
«تجاهل ترتيب المصفوفة» مفعّل
تُطابَق العناصر حسب محتواها، فيجد "cart" و"coupons" المنقولان نظيرَيهما ولا يُبلَّغ عنهما
- صفوف
featuresفي «الاختلافات»: - 1
- الملخص: المُعدَّل:
- 3
$.features[2] changed "wallet" → "gift-cards"
مثال الأداة («تحميل مثال»): features هي ["cart","coupons","wallet"] في اليسار و["coupons","cart","gift-cards"] في اليمين. أما بقية اختلافاته فهي نفسها في الوضعين.
مزايا مقارنة JSON
- مقارنة دلالية — يُتجاهل ترتيب المفاتيح والمسافات البيضاء والتنسيق
- إدراج كل اختلاف مع مسار JSON ونوع التغيير والقيمة القديمة والقيمة الجديدة
- وضع اختياري «تجاهل ترتيب المصفوفة» (Ignore array order) للمصفوفات الشبيهة بالمجموعات
- عرض المقارنة سطراً بسطر للمستندين بعد تنسيقهما
- عدّادات ملخّصة للقيم المضافة والمحذوفة والمتغيرة
- تصدير جدول الاختلافات بصيغة CSV
مثال على مقارنة JSON
مقارنة نسختين من ملف إعدادات
الإدخال:
Left: {"version":"1.4.0","limits":{"rps":100}}
Right: {"limits":{"rps":150,"burst":200},"version":"1.5.0"}النتيجة:
$.version changed "1.4.0" → "1.5.0"
$.limits.rps changed 100 → 150
$.limits.burst added → 200الأسئلة الشائعة حول مقارنة JSON
ماذا تعني المقارنة «الدلالية»؟
يُحلَّل المستندان ويُقارنان كبيانات لا كنص. فلا يُحتسب ترتيب المفاتيح ولا المسافات البيضاء ولا المسافات البادئة اختلافات أبداً — بل القيم الفعلية فقط.
هل يمكنني تجاهل ترتيب عناصر المصفوفات؟
فعّل خيار «تجاهل ترتيب المصفوفة» (Ignore array order). عندها تُطابَق العناصر حسب محتواها، فتُعدّ ["a","b"] و["b","a"] متساويتين.
ماذا تعني أنواع التغيير؟
مضاف (added): المفتاح موجود في المستند المعدّل (right) فقط. محذوف (removed): موجود في المستند الأصلي (left) فقط. متغيّر (changed): موجود في كليهما لكن القيمة مختلفة. تغيّر النوع (type changed): تبدّل نوع القيمة، مثلاً من سلسلة نصية إلى كائن.
كيف يُبلَّغ عن الاختلافات؟
يُدرج كل اختلاف مع مسار JSON الخاص به والقيمة القديمة والجديدة، كما يُبرز عرضٌ سطراً بسطر للمستندين بعد تنسيقهما التغييرات بصرياً.
ملاحظات تقنية
يُحلَّل المدخلان ويُجتازان بالتوازي. تُقارَن الكائنات حسب المفتاح، والمصفوفات حسب الفهرس (أو حسب المحتوى القياسي عند تجاهل ترتيب المصفوفات)، والقيم الأولية حسب قيمتها. أما عرض الأسطر فينسّق المستندين بمفاتيح مرتبة ويطبّق خوارزمية مقارنة تعتمد على أطول تسلسل جزئي مشترك (LCS)، مع الرجوع إلى مقارنة تقريبية للمدخلات الضخمة جداً.
المراجع
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Formatقواعد JSON: الكائنات والمصفوفات والنصوص والأرقام والقيم الثلاث الثابتة، وUTF-8 كترميز للتبادل.
- ECMA-404: The JSON Data Interchange Syntaxصياغة JSON كمعيار من Ecma، متوافقة مع RFC 8259.
- Introducing JSONالوصف الأصلي المختصر لـ JSON مع مخططاته النحوية.