"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية مقارنة كائنات JSON للمساواة مع تجاهل ترتيب الطفل في Java؟

كيفية مقارنة كائنات JSON للمساواة مع تجاهل ترتيب الطفل في Java؟

تم النشر بتاريخ 2024-11-20
تصفح:244

How to Compare JSON Objects for Equality While Ignoring Child Order in Java?

اختبار كائنات JSON للمساواة مع تجاهل ترتيب الطفل في Java

في اختبار الوحدة، من الشائع مقارنة كائنات JSON التي تم إرجاعها من خدمات الويب للقيم المتوقعة. ومع ذلك، قد تقوم بعض مكتبات JSON بإجراء مقارنات مرجعية صارمة، والتي يمكن أن تكون هشة وتفشل بسبب الاختلافات في الترتيب الفرعي.

ولهذا الغرض، توفر مكتبة Skyscreamer JSONAssert حلاً. يسمح وضعها غير الصارم بالمرونة من خلال:

  • السماح بتوسيع الكائنات: يمكن أن تتضمن الكائنات المتوقعة حقولًا إضافية دون التسبب في فشل المقارنة.
  • السماح بترتيب المصفوفات بشكل فضفاض: يمكن أن تكون المصفوفات خارج الترتيب ولا يزال يجتاز المقارنة.

في المقابل، يتصرف الوضع الصارم بشكل أكثر تحفظًا، على غرار فئة اختبار json-lib.

لاستخدام JSONAssert، يمكن إنشاء الاختبارات على النحو التالي: يلي:

@Test
public void testGetFriends() {
    JSONObject data = getRESTData("/friends/367.json");
    String expected = "{friends:[{id:123,name:\"Corby Page\"}"
          ",{id:456,name:\"Solomon Duskis\"}]}";
    JSONAssert.assertEquals(expected, data, false); // Non-strict mode
}

تتضمن المعلمات في JSONAssert.assertEquals() سلسلة JSON المتوقعة، وسلسلة البيانات الفعلية، وعلامة تشير إلى الوضع الصارم أم لا.

يوفر JSONAssert رسائل خطأ واضحة، وهو أمر بالغ الأهمية عندما مقارنة كائنات JSON الكبيرة، مما يضمن المتانة في اختبار الوحدة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3