我正在尝试过滤以下 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')] 当条件不满足时,我得到一个空数组[]。
$.[?($.dataScope
这是做什么用的?为什么前面多了一点?
你有正确的路径,只是由于某种原因被埋在这个额外的过滤器中。 只需使用
$.dataScope.KEY[?(@.scope=='Sales Organization' && @.value=='190B')]
(另外,
$.[]
带点是无效的。使用括号时省略点:$[]
。)