مقارنة JSON وإنشاء الرقعة

الصق مستندَي JSON. تعرض الصفحة كل قيمة أُضيفت أو حُذفت أو تغيّرت مع مسارها، وتكتب رقعة JSON Patch وفق RFC 6902 تحوّل المستند الأيسر إلى الأيمن.

مجانية تعمل داخل متصفحك آخر مراجعة: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة

المستند الأول، وغالباً هو النسخة القديمة. قيمه هي ”قبل“ كل تغيير.

المستند الثاني، وغالباً هو النسخة الجديدة. قيمه هي ”بعد“ كل تغيير.

يقارن المصفوفات كمجموعات، فالعنصر الذي يتحرك فقط لا يُعد تغييراً.

النتيجة

عدد الاختلافات — القيم المضافة والمحذوفة والمتغيرة معاً.
الصحة — هل النصان JSON صالحان، أم أيهما ليس صالحاً.
الملخص —
فحص الرقعة — تطبّق الرقعة على المستند الأيسر داخل المتصفح، وتقارن النتيجة بالمستند الأيمن.
رقعة JSON Patch (RFC 6902)
الاختلافات

تعمل هذه الأداة داخل متصفحك. ما تكتبه فيها لا يُرسل إلينا.

طريقة الاستخدام

  1. الصق JSON القديم في JSON الأيسر، والجديد في JSON الأيمن.
  2. ضع علامة على تجاهل ترتيب عناصر المصفوفات إن كانت المصفوفات مجموعات، مثل قوائم الوسوم.
  3. اقرأ جدول الاختلافات. يعطي كل صف المسار (JSON Pointer) للقيمة، وانسخ رقعة JSON Patch (RFC 6902) عندما يقول فحص الرقعة إنها تُطبَّق.

كيف تُقارَن المستندات

تُقارَن المستندات بالقيمة. ترتيب الأسماء داخل الكائن لا يهم، لأن JSON يعرّف الكائن بأنه مجموعة من الأعضاء. أما ترتيب العناصر في المصفوفة فيهم، ما لم تضع علامة على الخيار، لأن المصفوفة قائمة مرتبة.

تُقارَن الأعداد كأعداد، فالعددان 1 و1.0 متساويان. ويقول القسم 6 من RFC 8259 إن الأعداد الصحيحة من -(2^53)+1 إلى (2^53)-1 تقرؤها كل تطبيقات JSON بالطريقة نفسها، وقد يُقرَّب العدد الصحيح الأطول عند قراءته.

المسارات والرقعة

المسار هو JSON Pointer (RFC 6901): كل خطوة اسم أو فهرس، ويفصل بينهما شرطة مائلة. فأول عنصر في قائمة الوسوم هو /tags/0، والمسار الفارغ يعني المستند كله. وتُكتب الشرطة المائلة داخل الاسم بالرمز ~1، وتُكتب علامة التلدة بالرمز ~0.

تستخدم رقعة JSON Patch (RFC 6902) ثلاث عمليات: add وremove وreplace. تُحذف عناصر المصفوفة المحذوفة من الأخير إلى الأول، حتى يبقى كل فهرس صحيحاً عند استخدامه، وتُضاف العناصر الجديدة في النهاية بالفهرس "-"، الذي يعرّفه RFC 6902 بأنه نهاية المصفوفة.

تجاهل ترتيب المصفوفات

عند تحديد الخيار، تُطابَق العناصر بقيمتها مهما كان موضعها. والعناصر التي لا نظير لها تُعرض كإضافة أو حذف. والمصفوفة المختلفة تُستبدل كاملة في الرقعة، لأن رقعة تنقل العناصر فقط ستحتاج إلى معرفة كيف انتقلت. ثم تعطي الرقعة المصفوفة بترتيب المستند الأيمن.

مثال محلول: المستندات الافتراضية

المستند الأيسر له الاسم FireToolLand والإصدار 1، والوسمان json وcsv، وفيه free بقيمة true. والمستند الأيمن له الإصدار 2، والوسوم csv وjson وyaml، وفيه license بقيمة null. والاختلافات عند القراءة بالترتيب ستة: الإصدار، والوسمان المتغيران، والوسم yaml المضاف، وحذف free، وإضافة license.

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

النتيجة المستندات الافتراضية مع تجاهل الترتيب
عدد الاختلافات 6 4
الملخص إضافات: 2، حذف: 1، تغييرات: 3. إضافات: 2، حذف: 1، تغييرات: 1.

الأسئلة الشائعة

لماذا يهم ترتيب عناصر المصفوفة؟

المصفوفة في JSON قائمة مرتبة، لذلك فالمصفوفتان [1,2] و[2,1] بيانات مختلفة. ضع علامة على تجاهل ترتيب عناصر المصفوفات عندما تكون المصفوفة مجموعة، مثل قائمة وسوم أو صلاحيات.

ماذا يعني مسار مثل /tags/0؟

هو JSON Pointer (RFC 6901): العضو tags ثم أول عنصر فيه، لأن الفهارس تبدأ من 0. والمسار الفارغ يعني المستند كله، والاسم الذي يحتوي شرطة مائلة يُكتب بالرمز ~1 مكانها.

هل 1 و1.0 قيمة واحدة؟

نعم. كلاهما العدد واحد، فلا تعرض الصفحة أي اختلاف. وقد يُقرّب محلل JSON الأعداد الصحيحة الأكبر من 2^53، لذلك قارن المعرّفات الطويلة كنصوص.

ما فائدة رقعة JSON Patch؟

هي قائمة خطوات (RFC 6902) يطبّقها خادم أو مكتبة على مستند واحد ليحصل على مستند آخر، مثلاً لتحديث ملف إعدادات محفوظ. وفحص الرقعة يبيّن أن الخطوات تعطي المستند الصحيح.

لماذا تُستبدل المصفوفة كلها عند تجاهل الترتيب؟

عند تجاهل الترتيب لا توجد خطوة واحدة تحوّل المصفوفة المتغيرة إلى الصحيحة دون معرفة كيف انتقلت عناصرها. لذلك تكتب الرقعة المصفوفة الصحيحة كاملة.

هل يُرسل JSON الخاص بي إلى أي مكان؟

لا. يُقرأ النصان ويُقارنان في متصفحك، ولا يُرسل ما تلصقه إلى خادمنا ولا يُخزَّن هناك.

المصادر

آخر مراجعة للأرقام والنص: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة.

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