Игнорировать определенный атрибут / поля в jsonassert - PullRequest
0 голосов
/ 23 мая 2019

Мне нужно сравнить две строки json, игнорируя некоторые поля

В настоящее время я использую JSONAssert из org.SkyScreamer для сравнения, но не игнорирую никаких атрибутов.

Json 1:

{
  "contributions": [
    [
      {
        "order" : 1,
        "contributorId" : "1980"
      }
    ]
  ]
}

Json 2:

{
  "contributions": [
    [
      {
        "order": 1,
        "contributorId" : "5789"
      }
    ]
  ]
}
ArrayValueMatcher<Object> arrValMatch1 = new ArrayValueMatcher<>(new CustomComparator(
                JSONCompareMode.NON_EXTENSIBLE,
                new Customization("contributions[0][*].contributorId",(o1, o2) -> true)));

        Customization arrayValueMatchCustomization = new Customization("contributions", arrValMatch1);
        CustomComparator customArrayValueComparator = new CustomComparator(
                JSONCompareMode.NON_EXTENSIBLE,
                arrayValueMatchCustomization);
       assertEquals(subJson1, json2, customArrayValueComparator);

Я ожидаю, что вышеупомянутый сценарий должен быть принят. Но с ошибкой

Exception in thread "main" java.lang.AssertionError: contributions[0][contributorId=1980]
Expected: a JSON object
     but none found
 ; contributions[0][contributorId=5789]
Unexpected: a JSON object
...