JSONPath如何根据包含指定值的数组成员获取对应兄弟元素值
正确JSONPath查询语句
推荐兼容性最优的写法:
$.elements[?(@.ids[*].id == 'A')].value
语句逻辑说明
- 直接从
elements数组层做条件过滤,不需要先定位到id=A的对象再回溯父节点,适配绝大多数JSONPath解析实现 [?(@.ids[*].id == 'A')]是过滤规则:@指代elements数组中的每一个子对象,筛选条件为该对象的ids数组下存在id属性等于A的项- 末尾追加
.value即可拿到符合条件的对象对应的value字段值
执行后返回结果为:
["one"]
可选回溯写法(兼容性较弱)
如果你所用的JSONPath实现支持父节点回溯符^,也可以在你原有查询的基础上修改为:
$..ids[?(@.id=='A')]^.value
该写法是先定位到id=A的对象,再向上回溯一层到ids所属的父对象,最后取value字段,仅部分解析器支持该语法,不优先推荐。
内容的提问来源于stack exchange,提问作者j.xavier.atero
相关产品推荐
相关产品推荐

