如何优化JSONPath表达式,使空数组过滤返回空数组而非无匹配
JSONPath表达式优化:空数组输入返回空数组而非"no match"
当输入非空数组:
[ { "data": 4 }, { "data": 7 } ]
原表达式 $.data[] 可得到结果 [4, 7],但输入为空数组 [] 时会返回 no match。要实现非空数组结果不变、空数组返回 [] 的需求,可按以下方式优化:
最优兼容方案
使用表达式 $[*].data:
- 非空数组输入时,遍历数组内每个对象并提取
data属性值,返回结果仍为[4, 7]; - 空数组输入时,因无元素可遍历,直接返回空数组
[]。
可选默认值方案(兼容性有限)
若使用的JSONPath实现支持默认值语法(如Jayway JSONPath),也可使用 $.data[] ?: [],该表达式会在原匹配无结果时返回空数组。但此写法仅适用于支持该语法的实现,兼容性不如前者。
内容的提问来源于stack exchange,提问作者iron9
相关产品推荐
相关产品推荐

