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

使用Skyscreamer如何仅校验JSON的部分指定路径?

问题解答

Skyscreamer JSONAssert不需要更换,可通过以下两种方案实现仅校验指定路径的需求,无需修改受限的final Customization类:

方案1:路径白名单提取校验(更适合大体量JSON)

  • 提前整理所有需要校验的指定路径为集合
  • 借助JsonPath工具分别从预期JSON、实际JSON中提取对应路径的值
  • 仅对提取出的键值对调用Skyscreamer的比对逻辑完成校验,其余路径完全不参与比对,性能比全量校验更高

方案2:通配符忽略未指定路径(无需额外依赖)

不需要逐一声明要忽略的路径,只需先声明所有需要校验的路径规则,最后加一条通配符规则统一忽略所有未指定路径即可,参考代码:

// 声明需要校验的路径规则
Customization idCheck = new Customization(".user.id", (expected, actual) -> expected.equals(actual));
Customization nameCheck = new Customization(".user.name", (expected, actual) -> actual instanceof String);
// 通配符规则:所有未匹配到上述规则的路径直接比对通过
Customization ignoreAllUnspecified = new Customization("**", (o, t1) -> true);

// 传入规则执行比对
JSONAssert.assertEquals(expectedJson, actualJson, 
  new CustomComparator(JSONCompareMode.LENIENT, idCheck, nameCheck, ignoreAllUnspecified));

换库适用场景

如果你的校验路径是动态生成、数量超过百级,上述两种方案维护成本过高时,可选择换用JSON Schema校验类库,这类库原生支持仅校验schema中声明的字段,未声明字段默认忽略,更适配动态大量路径的校验场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:36:04