JSONPath - фильтр по полю, имя которого содержит '@' - PullRequest
1 голос
/ 09 мая 2020

У меня есть JSON вроде:

{
    "media": {
        "@ref": "https://Bull_FTR.mpg",
        "track": [{
            "@type": "General",
            "VideoCount": "1"
        }, {
            "@type": "Video",
            "StreamOrder": "0"
        }, {
            "@type": "Audio",
            "StreamOrder": "1"
        },
        {
            "@type": "Audio",
            "StreamOrder": "2"
        }]
    }
}

, и мне нужно запросить все поля из mwdia.tracks, у которых есть @type = 'Audio'. Проблема в том, что поле, которое я хочу отфильтровать, содержит "@", и мой запрос $.media.track[?(@.['@type'] == 'Audio')] не работает. Что я делаю не так?

1 Ответ

1 голос
/ 09 июня 2020

простой способ - заменить символ '@' его шестнадцатеричным кодом ( \ x40 ) прямо в ваш запрос jsonpath:

$.media.track[?(@['\x40type']=="Audio")]
...