涉及两个根值的 JsonPath 表达式

JsonPath expression involving two root values

我关注 JSON,我需要获取与 emailupdaterequest.emailContact 匹配的 emailID 的 personEmailContact。我试着写这样的表达 $.responsebody[?(@.personEmailContact.emailId ==$.emailupdaterequest.emailContact.emailId)] 但这似乎不起作用,我需要编写一个无需替换即可工作的表达式。谁能帮忙指点一下

{
    "emailupdaterequest": {
        "emailContact": {
            "emailId": "admin@gmail.com",
            "contactName": "ADMIN EMAIL"
        }
    },
    "responsebody": [
        {
            "personEmailContact": {
                "emailId": "admin@gmail.com",
                "contactTypeCode": "P",
                "contactName": "Joe"
            }
        },
        {
            "personEmailContact": {
                "emailId": "nonadmin@gmail.com",
                "contactTypeCode": "P",
                "contactName": "john"
            }
        }
    ]
}

您应该能够在表达式中使用根选择器 $。这将允许您将数组元素内的值与 JSON:

中其他地方的值进行比较
$.responsebody[?(@.personEmailContact.emailId == $.emailupdaterequest.emailContact.emailId)]

注意 $.emailupdaterequest.emailContact.emailId

$ 表示路径是从 JSON 的根计算的,而 @ 表示路径是在处理器迭代数组时从当前项计算的。