JsonPath 2.7.0及以上版本Option.SUPPRESS_EXCEPTIONS失效问题
JsonPath 2.7版本SUPPRESS_EXCEPTIONS选项失效问题
升级JsonPath到2.7版本后,配置Option.SUPPRESS_EXCEPTIONS选项无法抑制JSON路径评估时的异常,以下是复现示例:
示例代码
var node = objectMapper.readTree("{\"test\" : null}"); JsonPath.using(Configuration.builder() .options(Option.SUPPRESS_EXCEPTIONS).build()) .parse(node.toString()) .read("$.test[?(@ != null)]");
抛出异常
Filter: [?] can not be applied to primitives. Current context is: null com.jayway.jsonpath.InvalidPathException: Filter: [?] can not be applied to primitives. Current context is: null
问题说明
该问题属于JsonPath 2.7版本的已知问题:当对空值这类原始类型应用过滤器时,SUPPRESS_EXCEPTIONS选项未按预期抑制异常。
临时解决方案
- 提前判断节点类型:在应用过滤器前,先检查
$.test是否为数组或非空对象,避免对空值/原始类型使用过滤器 - 降级版本:暂时回退到JsonPath 2.6版本,等待官方修复该问题
- 手动捕获异常:在代码中显式捕获
InvalidPathException,自行处理异常场景
内容的提问来源于stack exchange,提问作者5Orange
相关产品推荐
相关产品推荐

