嵌套两层数组的JsonPath条件查询:匹配指定url返回完整父对象
解决方案:筛选出包含指定URL的父对象
针对你的嵌套JSON结构,以下是可行的JSONPath表达式,能直接返回produce数组中包含url: 'www.fruits.com'的完整父对象:
表达式1(精确层级匹配)
$.produce[?(@.upc.code.codingList[*].organizations[*].url == 'www.fruits.com')]
说明:
$.produce:定位到顶层的produce数组[?()]:数组过滤语法,用于筛选符合条件的元素@:代表当前遍历的produce数组元素@.upc.code.codingList[*].organizations[*].url:遍历当前元素下所有codingList和organizations数组的url字段,判断是否等于目标值
表达式2(递归匹配,更简洁)
如果JSONPath实现支持递归下降语法(多数主流实现都支持),可以用更短的表达式:
$.produce[?(@..url == 'www.fruits.com')]
说明:
@..url:递归遍历当前produce元素下所有层级的url字段,只要存在等于www.fruits.com的项,就会选中该produce对象
测试结果
用你的示例JSON测试,两个表达式都会返回以下结果:
{ "type": "fruit", "upc": { "code": { "codingList": [ { "item": "apple", "organizations": [ { "url": "www.fruits.com" } ] } ] } } }
内容的提问来源于stack exchange,提问作者Addison Joseph
相关产品推荐
相关产品推荐

