Java中使用JsonPath过滤嵌套数组获取指定字段值问题
JsonPath查询嵌套数组匹配问题解决方案
问题分析
你使用的JsonPath表达式错误在于数组包含元素的匹配逻辑:@.source__c in ['nci__c']是判断整个数组是否存在于目标数组中,而非检查目标元素nci__c是否存在于source__c数组内。
正确表达式
针对github.com/json-path/JsonPath(Jayway实现),可以用两种方式实现需求:
- 使用
in操作符,将目标元素放在左侧、数组放在右侧:
$..case_version__v.case_number__vr.none2b_references__cr[?('nci__c' in @.source__c)].case_identifier__c
- 使用
contains函数,直接检查数组是否包含指定元素:
$..case_version__v.case_number__vr.none2b_references__cr[?(@.source__c contains 'nci__c')].case_identifier__c
简化路径(可选)
如果JSON结构固定,可省略递归匹配符$..,使用绝对路径:
$.case_version__v.case_number__vr.none2b_references__cr[?('nci__c' in @.source__c)].case_identifier__c
以上表达式均可返回期望结果:["THIS-IS-MINE"]
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

