«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как сравнить объекты JSON на предмет равенства, игнорируя дочерний порядок в Java?

Как сравнить объекты JSON на предмет равенства, игнорируя дочерний порядок в Java?

Опубликовано 20 ноября 2024 г.
Просматривать:571

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

Тестирование объектов JSON на равенство с игнорированием дочернего порядка в Java

При модульном тестировании обычно сравниваются объекты JSON, возвращаемые веб-сервисами ожидаемым значениям. Однако некоторые библиотеки JSON могут выполнять строгие сравнения ссылок, которые могут быть нестабильными и давать сбой из-за различий в дочернем порядке.

Для этой цели библиотека Skyscreamer JSONAssert предоставляет решение. Его нестрогий режим обеспечивает гибкость за счет:

  • Разрешения расширения объектов: ожидаемые объекты могут включать дополнительные поля, не приводя к сбою сравнения.
  • Разрешение произвольного порядка массивов: массивы могут быть выходит из строя и все равно проходит сравнение.

Напротив, строгий режим ведет себя более консервативно, подобно тесту json-lib. class.

Чтобы использовать 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