JSONAssert.assertEquals:比较时忽略多个字段

bha*_*thp 2 java junit json jsonassert

我有以下 JSON 结构

{
  "name": "xyz",
  "address": {
    "street": "avenida",
    "number": "41414-44141",
    "code": "33ll",
    "moreFields": "some data"
  },
  "moreFields": "some data"
}
Run Code Online (Sandbox Code Playgroud)

在我的 JUNIT 类中,我必须比较具有上述结构的两个 JSON 文件。但是我想忽略字段address.numberaddress.code。我知道我可以使用下面的代码来忽略一个字段,但是我如何更改它以适应我的要求?

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

查看实现,我们为自定义方法提供的正则表达式似乎已被修改,我无法得出可以作为条件path的参数值OR

非常感谢任何建议

谢谢!

小智 5

尝试这个

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);
Run Code Online (Sandbox Code Playgroud)

我对 Xpath 不太确定。也许你应该尝试在它前面加上**.反曲前缀。

小心。朱利安.