如何使用JSON Path查询所有包含id属性的config对象
问题分析
思路错误点
- 你编写的
$..config[?(@.id)]语义为:查找所有config节点的子元素中携带id属性的元素,而非筛选本身带有id属性的config节点 - 当
config对应的值为数组类型时,config的子元素就是数组内的对象,此时筛选刚好能命中符合要求的元素;但当config对应的值为普通对象时,它的子元素是id、key这类属性的取值,没有符合筛选规则的结果,因此返回为空
正确查询语句
适配你所使用的测试工具及Newtonsoft.NET库的正确写法如下:($..config)[?(@.id)]
语句逻辑说明
- 先用
$..config递归查询JSON结构中所有键为config的节点,得到一个节点集合 - 通过括号将上述节点集合作为整体处理,再对集合内的每个节点执行
是否存在id属性的条件筛选,最终得到符合要求的config对象
内容的提问来源于stack exchange,提问作者ademchenko
相关产品推荐
相关产品推荐

