You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让JsonUnit的assertJsonEquals在比较时忽略指定字段?

如何在JsonUnit的assertJsonEquals中忽略指定字段

嘿,很高兴能帮你搞定这个问题!你已经在用JsonUnit忽略数组顺序了,要再加个忽略特定字段的逻辑其实超简单,JsonUnit本身就提供了直接的API来实现这个需求。

方法一:在已有配置上追加忽略规则

你可以直接在现有的when(IGNORING_ARRAY_ORDER)后面链式调用and(ignoringPaths(...)),把要忽略的字段路径传进去。针对你的场景,要忽略lastUpdatedTimestamp字段的话,修改后的代码如下:

assertJsonEquals(
    resource("ExpectedResponse.json"),
    ActualResponse,
    when(IGNORING_ARRAY_ORDER)
        .and(ignoringPaths("lastUpdatedTimestamp"))
);

如果需要忽略多个字段,只要给ignoringPaths传多个参数就行,比如:

.and(ignoringPaths("lastUpdatedTimestamp", "anotherFieldToIgnore"))

方法二:用configuration组合校验规则

另一种更直观的写法是用configuration()方法来整合多个校验规则,代码看起来更清晰:

assertJsonEquals(
    resource("ExpectedResponse.json"),
    ActualResponse,
    configuration()
        .withArrayOrderIgnored()
        .withIgnoredPaths("lastUpdatedTimestamp")
);

关于字段路径的小提示

如果要忽略的是嵌套字段,比如JSON结构是{"metadata": {"updateTime": "..."}},那对应的路径就是"metadata.updateTime",用点号来标识层级嵌套的字段就好。

这两种方式都能完美满足你的需求,选你觉得更易读的写法就ok啦!

内容的提问来源于stack exchange,提问作者Saffik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:00:09