嵌套JSONArray中条件JsonPath匹配问题求助
嵌套JSON中匹配特定value对应的id解决方案
给定目标JSON:
{ "iterations": [ { "id": "122", "parameters": [ { "name": "Country", "value": "US" } ] }, { "id": "123", "parameters": [ { "name": "Country", "value": "India" } ] } ] }
你之前尝试的两个JsonPath表达式之所以返回全部id,是因为内层过滤器的写法没有正确传递判断条件到外层数组筛选——内层的[?(@.value=='India')]只是尝试在参数数组里查找匹配项,但外层判断的是“这个表达式是否有结果”,而非“是否存在匹配的参数项”,只要迭代项有parameters数组,就会被判定为符合条件。
以下是两种可行的正确表达式:
基于contains操作符(适用于Jayway等主流JsonPath实现):
$.iterations[?(@.parameters contains {'value': 'India'})].id基于存在性检查(更通用的写法):
$.iterations[?(length(@.parameters[?(@.value == 'India')]) > 0)].id
使用上述任一表达式,都会精准返回"123",即value为"India"对应的id值。
内容的提问来源于stack exchange,提问作者IrshadAli
相关产品推荐
相关产品推荐

