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

时间:2019-01-25 15:10:38

标签: java json junit jsonassert

我具有以下JSON结构

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

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

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

看一下实现,看来我们提供给自定义方法的正则表达式被修改了,我无法提出path参数的值,该参数可以满足OR的条件。

任何建议都值得赞赏

谢谢!

1 个答案:

答案 0 :(得分: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,我不太确定。 也许您应该尝试使用**.为其前缀以进行反曲。

保重。 朱利安。