使用Jayway JSONPath提取满足iscomponentInSal条件的empDetails.name
正确的Jayway JSONPath写法
要提取目标字段,得先从顶层数组里筛出符合条件的对象,再定位到姓名字段,正确的表达式是:
$.[?(@.empDetails.compensation.salary[?(@.iscomponentInSal == true)])].empDetails.name
表达式说明:
$.[?()]:遍历顶层数组里的每一个对象,进行条件过滤@.empDetails.compensation.salary[?(@.iscomponentInSal == true)]:检查当前对象的salary数组中,是否存在至少一个iscomponentInSal值为true的元素- 末尾的
.empDetails.name:提取符合条件对象的姓名字段
验证结果:
用这个表达式查询你提供的JSON数据,会得到结果:
["John"]
你之前的表达式问题出在层级定位错误——直接从顶层数组查找salary字段,但salary实际嵌套在empDetails.compensation下,同时也没有关联到最终要提取的name字段,所以无法得到目标结果。
内容的提问来源于stack exchange,提问作者Mandy
相关产品推荐
相关产品推荐

