Что такое выражение JsonPath для выбора объекта на основе значений подобъекта? - PullRequest
0 голосов
/ 29 апреля 2019

Мне нужно иметь возможность выбирать элементы в документе 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 == 'Producer' && @ .value == 'beta')])]

и

$. topLevelArray [? (@ .keyValuePairs [? (@. key == 'Producer' && @ .value == 'beta')])]

К сожалению, оба возвращают все в списке, включая запись с Producer of 'альфа'.Спасибо заранее.

...