YamlBox

أدوات جيسون · 60دقيقة قراءة

JSON diff: مقارنة البيانات بالطريقة التي تم تنظيمها بها بالفعل

يخبرك فرق النص بالأحرف التي تغيرت. يخبرك فرق JSON بالقيم التي تغيرت، وهذه أسئلة مختلفة - غالبًا بإجابات مختلفة. نظرًا لأن ترتيب كائنات JSON ليس مهمًا، فإن الحمولة التي تعرضها المقارنة المبنية على السطر كإعادة كتابة كاملة قد تكون متطابقة من الناحية الهيكلية، في حين أن التغيير الحقيقي لقيمة متداخلة واحدة يمكن أن يختبئ داخل سطر واحد مصغر طويل جدًا.

تم التحديث

لماذا تفشل اختلافات النص على JSON

ثلاث خصائص لكسر المقارنة على مستوى الأحرف. ترتيب المفاتيح ليس مهمًا، لذا فإن نفس الكائن الذي تم تسلسله بطريقتين يبدو مختلفًا سطرًا تلو الآخر. المسافة البيضاء ليست ذات أهمية، لذا فإن المستند المطبوع بشكل جيد وتوأمه المصغر يبدوان مختلفين تمامًا. والمصفوفات موضعية، لذا يؤدي إدخال واحد إلى إزاحة كل سطر تالٍ وإنتاج سلسلة من الاختلافات الزائفة التي تدفن التغيير الحقيقي الوحيد.

ما تقارير المقارنة الهيكلية بدلا من ذلك

يقوم الفرق بتحليل كلا المستندين، والتنقل عبر الأشجار الناتجة، والإبلاغ عن التغييرات حسب المسار: المفاتيح المضافة، والمفاتيح التي تمت إزالتها، والقيم التي غيرت النوع أو المحتوى، وإدخالات المصفوفة التي تم نقلها. يقرأ الناتج مثل `spec.replicas: 3 → 5` بدلاً من عشرين سطرًا من السياق المتغير. هذه هي المعلومات التي تحتاجها عندما يتصرف النشر بشكل مختلف وتريد معرفة ما الذي تغير بالفعل في التكوين.

                - spec.template.spec.containers[0].image
+   ghcr.io/acme/web:1.4.2 → ghcr.io/acme/web:1.5.0
- metadata.annotations["deployed-by"]   (removed)
              

استخدام فرق JSON في العمل الحقيقي

  • إصدار واجهة برمجة التطبيقات — قارن استجابة الإصدارين 1 و2 لنفس الطلب واقرأ تغيير العقد مباشرة من المسارات.
  • لقطات الاختبار الفاشلة - تعرف على المجال الذي انحرف بدلاً من إعادة إنشاء اللقطة والأمل.
  • مراجعة البنية التحتية — قم بالتمييز بين البيان المعروض قبل ترقية المخطط وبعده.
  • عمليات التحقق من الترحيل - تأكد من أن عملية التصدير احتفظت بكل مفتاح بعد تغيير المخطط أو قاعدة البيانات.

الترتيب مهم للمصفوفات وليس للكائنات: المصفوفة المعاد ترتيبها هي تغيير حقيقي، في حين أن الكائن المعاد ترتيبه ليس كذلك. إن الاختلاف الهيكلي يعرف الفرق؛ فرق النص لن يحدث أبدًا.

تفاصيل عملية تستحق المعرفة

يجب أن يكون كلا المستندين صالحين بتنسيق JSON قبل أن تكون أي مقارنة ذات معنى، لذا يجب أن تظهر أخطاء التحقق أولاً، مع السطر والعمود. انتبه إلى انحراف النوع وكذلك انحراف القيمة:`"3"`و`3`تبدو متطابقة تقريبًا ولكنها تكسر المستهلكين الذين يفترضون أحدهما أو الآخر.وعندما يكون أحد الجانبين فارغًا أو كائنًا واحدًا بينما يكون الجانب الآخر عبارة عن مصفوفة، فهذا عادةً ما يكون علامة على تغيير شكل واجهة برمجة التطبيقات بدلاً من تغيير البيانات. يجعل فرق JSON المكون من جزأين كلا الجانبين مرئيين في وقت واحد، وهو أسرع من تمييز ملف مقابل نسخة متذكرة.

احتفظ بالحمولات المحلية

الاختلافات هي بالضبط المستندات التي لا ترغب في تحميلها على الإطلاق: استجابات الإنتاج، وحمولات الفواتير، والصادرات مع صفوف العملاء. وتعني مقارنتها في المتصفح أن التحليل والسير على الشجرة والاختلاف المعروض كلها تحدث على جهازك، وتستمر الأداة في العمل مع قطع الشبكة.

٠الفرق — الأسئلة المتداولة

هل يؤثر ترتيب المفاتيح على اختلاف JSON؟

لا. ترتيب مفتاح الكائن ليس مهمًا في JSON، لذا فإن الاختلاف الهيكلي يعامل المفاتيح المعاد ترتيبها على أنها لم تتغير. إذا كانت تغييرات الترتيب ذات معنى بالنسبة لك، فهذا يعني دلالات ذات ترتيب - على سبيل المثال خريطة متسلسلة - وتنتمي إلى مصفوفة بدلاً من ذلك.

كيف يمكنني مقارنة ملفين JSON غير صالحين؟

يجب أن تكون صالحة أولا. قم بتشغيل كليهما من خلال منسق أو أداة التحقق، وقم بإصلاح السطر والعمود المُبلغ عنهما، ثم قارن. ينتج عن الاختلاف في المدخلات المشوهة اختلافات تكون نتيجة لخطأ في بناء الجملة وليست تغييرات حقيقية في البيانات.

هل يمكن للفرق JSON إظهار القيم التي تمت إضافتها أو إزالتها؟

نعم - هذه هي الميزة الرئيسية على اختلاف النص. يتم الإبلاغ عن المسارات المضافة والمحذوفة بشكل واضح، إلى جانب القيم التي تم تغييرها وأنواعها، بحيث يكون التعليق التوضيحي الذي تمت إزالته مرئيًا مثل علامة الصورة التي تم تغييرها.

الأدوات المذكورة في هذه التدوينة

تصفح القائمة الكاملة للأدوات 19

المزيد من المقالات للقراءة

60دقيقة قراءة

منسق JSON: جميل ومصغر وصالح بالفعل

منسق JSON يقوم بالطباعة الجميلة والتصغير والتحقق من صحة مواقع الأخطاء الدقيقة - بالإضافة إلى الأخطاء النحوية الخمسة وراء كل خطأ JSON غير صالح تقريبًا.

60دقيقة قراءة

مخطط JSON إلى JSON: من عينة الحمولة إلى العقد

قم بتحويل مخطط JSON إلى مخطط JSON في المتصفح: استنتج مسودة من حمولة حقيقية، ثم قم بتقوية الحقول والتنسيقات والتعدادات المطلوبة - بالإضافة إلى حدود الاستدلال.

جميع المشاركات 19 →