在包含具有给定字符串的数组的数组中查找元素:JsonPath Java

Finding an element within an array that contains an array with a given string: JsonPath Java

我是 JsonPath 新手,正在使用 Java 端口 https://github.com/json-path/JsonPath

我有一个 JSON 对象,看起来像这样(实际上有很多条目,但为了简洁起见,我删除了额外的条目)。

{
    "entry": [{
        "fullUrl": "urn:uuid:42627ef0-ea02-4323-8059-c8dfb6125314",
        "resource": {
            "resourceType": "Patient",
            "id": "42627ef0-ea02-4323-8059-c8dfb6125314",
            "meta": {
                "profile": [
                    "http://hl7.org/fhir/us/mcode/StructureDefinition/mcode-cancer-patient",
                    "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
                ]
            },
            "text": {
                "status": "generated",
                "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Generated by <a href=\"https://github.com/synthetichealth/synthea\">Synthea</a>.Version identifier: v2.5.0-340-gabc9fc4a\n .   Person seed: -7528621318134299240  Population seed: 1586172373839</div>"
            }
        }
    }]
}

我正在尝试在配置文件数组中查找包含特定 URI 的条目。我似乎无法获得使它正常工作的正确语法,此时我有点难过。

这是我到目前为止尝试过的方法,但没有成功。

$..entry[?(@.resource.meta[?(@.profile.indexOf('http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient') > -1)])]

非常感谢任何指点!

Jayway Jsonpath 实现不支持 indexOf。请改用 in

$..entry[?('http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient' in @.resource.meta.profile)]

请参考Filter Operators Jayway jsonpath

支持

在线测试工具:https://jsonpath.herokuapp.com/