JsonPath 表达式不应用条件

问题描述 投票:0回答:1

我正在尝试过滤以下 json :

{
    "eventID": "string",
    "eventType": "string",
    "eventDate": "2024-03-15T18:21:24Z",
    "source": "string",
    "dataKey": "string",
    "dataChange": {
        "KEY": []
    },
    "dataScope": {
        "dataObject": "string",
        "KEY": [
            {
                "scope": "scope1",
                "value": "scope2"
            },
            {
                "scope": "scope2",
                "value": "scope3"
            },
            {
                "scope": "Sales Organization",
                "value": "190B" 
            }
        ]
    }
}

使用这个表达:

$.[?($.dataScope.KEY[?(@.scope=='Sales Organization' && @.value=='190B')])]

仅当范围和值满足条件时,我才需要获取此对象,但是当我更改值时,我仍然在输出中获取该对象。

当我单独尝试此过滤器时: $.dataScope.KEY[?(@.scope=='Sales Organization' && @.value=='190B')] 当条件不满足时,我得到一个空数组[]。

json jsonpath
1个回答
0
投票

$.[?($.dataScope

这是做什么用的?为什么前面多了一点?

你有正确的路径,只是由于某种原因被埋在这个额外的过滤器中。 只需使用

$.dataScope.KEY[?(@.scope=='Sales Organization' && @.value=='190B')]

(另外,

$.[]
带点是无效的。使用括号时省略点:
$[]
。)

© www.soinside.com 2019 - 2024. All rights reserved.