تخطَّ إلى المحتوى الرئيسي

كيف تقارن ملفي JSON (وتعثر على ما تغيّر فعلاً)

لا يتم رفع أي شيءتم اختباره حتى 50 MB

قارن بين ملفي JSON واعرف القيم التي أضيفت أو حُذفت أو تغيّرت من دون اعتبار المسافات أو ترتيب المفاتيح تغييرات. الحد: 50 ميغابايت لكل ملف.

نُشر في: 2026-08-28محدّث: 2026-09-133 minقارن ملفي JSON
رسم توضيحي لسير عمل البيانات: كيف تقارن ملفي JSON (وتعثر على ما تغيّر فعلاً)

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

يأتي الحد الحالي لكل ملف الظاهر في صفحة الأداة من الحالة الأصعب، لا من ملف متوسط. اجتاز ملفان ببيانات متداخلة عبر مستويات كثيرة ثلاث تشغيلات منفصلة عند 50 MiB لكل ملف، وكل تشغيل في متصفح جديد. استخدم أحد التشغيلات المسجلة نحو 1.18 GiB من الذاكرة الإضافية. وعند 100 MiB لكل ملف وصل النوع نفسه من المدخلات إلى نحو 2.33 GiB وتجاوز سقف الأمان البالغ 2 GiB، لذلك رُفض هذا الحجم رغم أن نتيجة المقارنة بقيت صحيحة. أما JSON الأكثر اعتيادية فوصل في الاختبار إلى 200 MiB لكل ملف. لذلك يتبع الحد المنشور أصعب حالة جرى اختبارها، لا الحالة السهلة فقط.

قد يبدو ملفا JSON مختلفين جداً مع أن معظم البيانات فيهما متشابهة. قد يحتوي أحدهما على مسافات أكثر. وقد يعرض الآخر المفاتيح بترتيب مختلف. المقارنة النصية العادية قد تجعل هذه الفروق البسيطة تبدو مهمة.

أداة مقارنة JSON تركز على البيانات نفسها. تساعدك على معرفة القيم التي أضيفت أو حُذفت أو تغيّرت.

متى تكون هذه المقارنة مفيدة؟

استخدمها عندما يكون لديك إصداران من النوع نفسه من بيانات JSON وتريد معرفة التغييرات الفعلية.

من الأمثلة الشائعة ملف إعدادات قديم وآخر جديد، أو استجابتان من API، أو بيانات قبل عملية نقل وبعدها، أو ملفا تصدير يفترض أن يحتويَا على السجلات نفسها.

إذا كان ما يهمك هو المسافات أو فواصل الأسطر أو شكل النص نفسه، فاستخدم مقارنة نصية عادية.

// document-a.json
{
  "user": {
    "id": 42,
    "email": "ada@example.com",
    "role": "admin"
  },
  "audit": { "created": "2026-01-12", "updated": "2026-07-04" }
}

// document-b.json
{ "audit": { "updated": "2026-08-22", "created": "2026-01-12" },
  "user": { "email": "ada@example.com", "id": 42, "role": "editor" } }

ينتج عن هذين المستندين فرق صغير ومركّز: تغيّر user.role، وتغيّر audit.updated. لا تظهر مفاتيح الكائنات المعاد ترتيبها ولا المسافات البيضاء المعاد تنسيقها على الإطلاق.

متغيرة$.audit.updated "2026-07-04" → "2026-08-22"
متغيرة$.user.role "admin" → "editor"

كيفية مقارنة المصفوفات

الخيار الأكبر هو كيف تقرن الأداة العناصر داخل مصفوفة JSON، لأن الإجابة قد تكون "عنصر مختلف" أو "نفس العنصر تغيّر" بحسب الاقتران.

  1. 01

    استخدم الموقع للقوائم المرتبة

    يُقارن العنصر الأول بالأول، والثاني بالثاني، وهكذا. هذا مناسب عندما يكون لموقع العنصر معنى.

  2. 02

    استخدم حقلاً ثابتاً إذا كانت العناصر قد تنتقل

    اختر حقلاً مثل id أو sku أو email إذا كانت السجلات نفسها قد تظهر بترتيب مختلف.

  3. 03

    اختر حقلاً موجوداً

    إذا كان مفقوداً في بعض العناصر، فراجع تلك النتائج بعناية أكبر.

  4. 04

    اختر حقلاً فريداً

    إذا كان لعنصرين القيمة نفسها، فلن تتمكن الأداة من معرفة أيهما تقصد بثقة من دون معلومات إضافية.

للحصول على نتيجة واضحة، اختر حقلاً يحدد سجلاً واحداً مثل معرّف الحساب أو SKU للمنتج.

ما الذي يحويه التقرير فعلياً

تلخّص النتيجة أهم الفروق وتعرض القيم التي تغيّرت.

القسمما يخبرك بهما الذي قد لا يزال يسوء
الملخصهل يحتوي الملفان على البيانات نفسهاتُتجاهل المسافات وترتيب مفاتيح الكائن.
الإجمالياتعدد القيم المضافة أو المحذوفة أو المتغيرة أو التي تغيّر نوعهايساعدك هذا على معرفة حجم التغيير بسرعة.
التغييراتالقيم المختلفة بين الملفينراجع السجلات المهمة قبل الاعتماد على النتيجة.
النتائج الكبيرةعرض أقصر عندما يكون عدد التغييرات كبيراًنزّل النتيجة إذا احتجت إلى مراجعة المزيد.

إذا كان عدد التغييرات كبيراً، فابدأ بالملخص وراجع أولاً الأجزاء التي توقعت تغيّرها.

قراءة أنواع النتائج

تجمع النتيجة الفروق في فئات بسيطة قليلة.

النوعمتى يظهرمثال على المسار والمعاينة
مضافقيمة موجودة فقط في الملف الأحدثيظهر حقل بريد إلكتروني جديد
محذوفقيمة موجودة فقط في الملف الأقدميختفي حقل قديم
متغيرالحقل نفسه أصبح يحمل قيمة أخرىتتغير admin إلى editor
نوع مختلفالحقل نفسه تغيّر من نوع قيمة إلى آخريصبح 42 نصاً بدلاً من رقم
عنصر يحتاج إلى مراجعةالحقل المختار لم يحدد العنصر بوضوحتأكد من أن الحقل المختار موجود وفريد

فإذا تحول رقم إلى نص مثلاً، تعرض النتيجة هذا التغيير مباشرة بدلاً من تحويله إلى قائمة طويلة من الفروق الصغيرة.

الملف الذي ليس JSON صالحاً يفشل بخطأ تحليل قبل أن تشتغل أي مقارنة. لا تحاول الأداة إصلاح أو إجبار JSON غير صالح. تحقّق من الملفات بالمحلِّل الذي تثق به، وأصلح الصياغة، وشغّل المقارنة مجدداً.

التحقق من فرق قبل التصرف بناءً عليه

عامل التقرير كدليل لا حكم، خاصة عندما يكون أحد المدخلين مولَّداً آلياً.

تأكد أن identical: true تعني ما تظن. لا يُحسب ترتيب مفاتيح الكائنات ولا المسافات البيضاء. إذا كانت التغييرات الوحيدة التي توقعتها هي إعادة تنسيق، فإن تقرير identical يؤكدها؛ إذا أردت رؤية انحراف التنسيق، فشغّل فرقاً نصياً بدلاً من ذلك.

راجع عناصر المصفوفة التي لم تُربط بوضوح. إذا حدث ذلك كثيراً، فاختر حقلاً أفضل مثل معرّف فريد وشغّل المقارنة مرة أخرى.

راجع بعض التغييرات المهمة. تأكد من أن القيم القديمة والجديدة تطابق الملفين الأصليين، خاصة قبل عملية نقل أو تغيير مهم.

قارن الإجماليات بالتغيير الذي توقعته. عملية ترحيل إطلاق مخطط تضيف حقولاً جديدة وتحذف آخر يجب أن تُبلِّغ عن removed واحد و added اثنين و changed صفر. أي شيء أبعد من ذلك يحتاج تفسيراً قبل أن تشحن التغيير.

عندما تكون النتيجة كبيرة جداً للقراءة

تُقتطع المعاينة للعرض لكن الإجماليات لا تُقتطع. نمطان يعملان على نطاق واسع:

  • ابدأ بالجزء الذي توقعت تغيّره. راجع السجلات المهمة أولاً بدلاً من محاولة قراءة كل شيء دفعة واحدة.
  • نزّل نتيجة المقارنة. احتفظ بها مع ملاحظاتك إذا احتجت إلى مراجعة الفروق لاحقاً.
قارن ملفي JSON

شاهد التحويل

يتحول مستندا JSON إلى قائمة دقيقة بالتغييرات.

اعرف أين تغيرت القيم أو أنواع البيانات من دون أن يشتتك اختلاف غير مؤثر في ترتيب المفاتيح.

A.json
{"id":42,"price":49,"active":true}
B.json
{"active":"true","price":44,"id":42}
النتيجة
items[id=42].price49 → 44
items[id=42].activeboolean → string