Что такое выражение JsonPath для выбора объекта на основе значений подобъекта?
Мне нужно иметь возможность выбирать элементы в документе JSON на основе значений в подэлементах, которые, к сожалению, находятся в списке пар ключ-значение (с этой структурой мне приходится работать). Я использую Jayway 2.4.0.
Вот документ JSON:
{
"topLevelArray": [
{
"elementId": "Elem1",
"keyValuePairs": [
{
"key": "Length",
"value": "10"
},
{
"key": "Width",
"value": "3"
},
{
"key": "Producer",
"value": "alpha"
}
]
},
{
"elementId": "Elem2",
"keyValuePairs": [
{
"key": "Length",
"value": "20"
},
{
"key": "Width",
"value": "8"
},
{
"key": "Producer",
"value": "beta"
}
]
},
{
"elementId": "Elem3",
"keyValuePairs": [
{
"key": "Length",
"value": "15"
},
{
"key": "Width",
"value": "5"
},
{
"key": "Producer",
"value": "beta"
}
]
}
]
}
Вот JsonPath, я думал, что добьется цели:
$.. topLevelArray [? (@.keyValuePairs [? (@. key == 'Производитель' && @.value=='бета') ]) ]
а также
$.topLevelArray[?( @.keyValuePairs[?(@.key=='Producer' && @.value=='beta') ]) ]
К сожалению, оба возвращают все в списке, включая запись с продюсером "альфа". Спасибо заранее.