Мне нужно сравнить две строки 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