JSONAssert.assertEquals: игнорирование нескольких полей при сравнении

У меня есть следующая структура JSON

{
  "name": "xyz",
  "address": {
    "street": "avenida",
    "number": "41414-44141",
    "code": "33ll",
    "moreFields": "some data"
  },
  "moreFields": "some data"
}

В моем классе JUNIT мне нужно будет сравнить два файла JSON, которые имеют вышеуказанную структуру. Однако я хотел бы игнорировать поля address.number а также address.code, Я понимаю, что могу использовать приведенный ниже код, чтобы игнорировать одно поле, но как я могу изменить это, чтобы приспособиться к моим требованиям?

assertEquals(json1, json2,
return new CustomComparator(JSONCompareMode.NON_EXTENSIBLE,
      Customization.customization("address.code",
        (o1, o2) -> {
          return true; 
        })
    ));

Глядя на реализацию, кажется, что регулярное выражение, которое мы предоставляем для метода настройки, изменено, и я не могу представить значение для path параметр, который может OR состояние.

Любые предложения очень ценятся

Спасибо!

0 ответов

Попробуй это

CustomComparator comparator = new CustomComparator(
            JSONCompareMode.LENIENT,
            new Customization("address.nunber", (o1, o2) -> true),
            new Customization("address.code", (o1, o2) -> true));
JSONAssert.assertEquals(
        expectedJsonAsString,
        actualJsonAsString,
        comparator);

Я не совсем уверен насчет Xpath. Возможно, вам стоит попробовать поставить перед ним префикс**. для изгиба.

Береги себя. Джулиан.

Другие вопросы по тегам