كيف تقارن ملفي JSON (وتعثر على ما تغيّر فعلاً)
قارن بين ملفي JSON واعرف القيم التي أضيفت أو حُذفت أو تغيّرت من دون اعتبار المسافات أو ترتيب المفاتيح تغييرات. الحد: 50 ميغابايت لكل ملف.
قارن ملفي 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. لا تظهر مفاتيح الكائنات المعاد ترتيبها ولا المسافات البيضاء المعاد تنسيقها على الإطلاق.
كيفية مقارنة المصفوفات
الخيار الأكبر هو كيف تقرن الأداة العناصر داخل مصفوفة JSON، لأن الإجابة قد تكون "عنصر مختلف" أو "نفس العنصر تغيّر" بحسب الاقتران.
- 01
استخدم الموقع للقوائم المرتبة
يُقارن العنصر الأول بالأول، والثاني بالثاني، وهكذا. هذا مناسب عندما يكون لموقع العنصر معنى.
- 02
استخدم حقلاً ثابتاً إذا كانت العناصر قد تنتقل
اختر حقلاً مثل id أو sku أو email إذا كانت السجلات نفسها قد تظهر بترتيب مختلف.
- 03
اختر حقلاً موجوداً
إذا كان مفقوداً في بعض العناصر، فراجع تلك النتائج بعناية أكبر.
- 04
اختر حقلاً فريداً
إذا كان لعنصرين القيمة نفسها، فلن تتمكن الأداة من معرفة أيهما تقصد بثقة من دون معلومات إضافية.
للحصول على نتيجة واضحة، اختر حقلاً يحدد سجلاً واحداً مثل معرّف الحساب أو SKU للمنتج.
ما الذي يحويه التقرير فعلياً
تلخّص النتيجة أهم الفروق وتعرض القيم التي تغيّرت.
| القسم | ما يخبرك به | ما الذي قد لا يزال يسوء |
|---|---|---|
| الملخص | هل يحتوي الملفان على البيانات نفسها | تُتجاهل المسافات وترتيب مفاتيح الكائن. |
| الإجماليات | عدد القيم المضافة أو المحذوفة أو المتغيرة أو التي تغيّر نوعها | يساعدك هذا على معرفة حجم التغيير بسرعة. |
| التغييرات | القيم المختلفة بين الملفين | راجع السجلات المهمة قبل الاعتماد على النتيجة. |
| النتائج الكبيرة | عرض أقصر عندما يكون عدد التغييرات كبيراً | نزّل النتيجة إذا احتجت إلى مراجعة المزيد. |
إذا كان عدد التغييرات كبيراً، فابدأ بالملخص وراجع أولاً الأجزاء التي توقعت تغيّرها.
قراءة أنواع النتائج
تجمع النتيجة الفروق في فئات بسيطة قليلة.
| النوع | متى يظهر | مثال على المسار والمعاينة |
|---|---|---|
| مضاف | قيمة موجودة فقط في الملف الأحدث | يظهر حقل بريد إلكتروني جديد |
| محذوف | قيمة موجودة فقط في الملف الأقدم | يختفي حقل قديم |
| متغير | الحقل نفسه أصبح يحمل قيمة أخرى | تتغير admin إلى editor |
| نوع مختلف | الحقل نفسه تغيّر من نوع قيمة إلى آخر | يصبح 42 نصاً بدلاً من رقم |
| عنصر يحتاج إلى مراجعة | الحقل المختار لم يحدد العنصر بوضوح | تأكد من أن الحقل المختار موجود وفريد |
فإذا تحول رقم إلى نص مثلاً، تعرض النتيجة هذا التغيير مباشرة بدلاً من تحويله إلى قائمة طويلة من الفروق الصغيرة.
الملف الذي ليس JSON صالحاً يفشل بخطأ تحليل قبل أن تشتغل أي مقارنة. لا تحاول الأداة إصلاح أو إجبار JSON غير صالح. تحقّق من الملفات بالمحلِّل الذي تثق به، وأصلح الصياغة، وشغّل المقارنة مجدداً.
التحقق من فرق قبل التصرف بناءً عليه
عامل التقرير كدليل لا حكم، خاصة عندما يكون أحد المدخلين مولَّداً آلياً.
تأكد أن identical: true تعني ما تظن. لا يُحسب ترتيب مفاتيح الكائنات ولا المسافات البيضاء. إذا كانت التغييرات الوحيدة التي توقعتها هي إعادة تنسيق، فإن تقرير identical يؤكدها؛ إذا أردت رؤية انحراف التنسيق، فشغّل فرقاً نصياً بدلاً من ذلك.
راجع عناصر المصفوفة التي لم تُربط بوضوح. إذا حدث ذلك كثيراً، فاختر حقلاً أفضل مثل معرّف فريد وشغّل المقارنة مرة أخرى.
راجع بعض التغييرات المهمة. تأكد من أن القيم القديمة والجديدة تطابق الملفين الأصليين، خاصة قبل عملية نقل أو تغيير مهم.
قارن الإجماليات بالتغيير الذي توقعته. عملية ترحيل إطلاق مخطط تضيف حقولاً جديدة وتحذف آخر يجب أن تُبلِّغ عن removed واحد و added اثنين و changed صفر. أي شيء أبعد من ذلك يحتاج تفسيراً قبل أن تشحن التغيير.
عندما تكون النتيجة كبيرة جداً للقراءة
تُقتطع المعاينة للعرض لكن الإجماليات لا تُقتطع. نمطان يعملان على نطاق واسع:
- ابدأ بالجزء الذي توقعت تغيّره. راجع السجلات المهمة أولاً بدلاً من محاولة قراءة كل شيء دفعة واحدة.
- نزّل نتيجة المقارنة. احتفظ بها مع ملاحظاتك إذا احتجت إلى مراجعة الفروق لاحقاً.
شاهد التحويل
يتحول مستندا JSON إلى قائمة دقيقة بالتغييرات.
اعرف أين تغيرت القيم أو أنواع البيانات من دون أن يشتتك اختلاف غير مؤثر في ترتيب المفاتيح.
{"id":42,"price":49,"active":true}{"active":"true","price":44,"id":42}هل تحتاج إلى هذا الآن؟
قارن ملفي JSONأدوات ذات صلة
افتح الأداة التي يتناولها هذا الدليل، أو استكشف أداة أخرى ذات صلة.