Java环境下使用JsonPath查找profile数组含指定URI的entry元素
正确查询语法
你之前的写法错误嵌套了过滤表达式,meta为对象而非数组,不需要额外嵌套过滤层,直接访问其下的profile数组做判断即可,以下是两种可用写法:
- 基于
indexOf的兼容写法(适配所有Java版JsonPath版本)
$..entry[?(@.resource.meta.profile.indexOf('http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient') != -1)]
- 更简洁的
in运算符写法(支持2.4.0及以上版本)
$..entry[?('http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient' in @.resource.meta.profile)]
异常兼容优化
如果你的业务数据中存在部分entry缺少resource/meta/profile字段的情况,可以增加非空判断避免查询报错:
$..entry[?(@.resource != null && @.resource.meta != null && @.resource.meta.profile != null && @.resource.meta.profile.indexOf('http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient') != -1)]
内容的提问来源于stack exchange,提问作者Diana E
相关产品推荐
相关产品推荐

