JSONPath-按名称包含“ @”的字段过滤

时间:2020-05-09 03:02:01

标签: json jsonpath

我有类似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 个答案:

答案 0 :(得分:1)

简单的方法是将十六进制代码( \ x40 )替换为@字符,直接插入jsonpath查询中:

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