在 JsonPath 中使用过滤器查询

query with filter in JsonPath

我有这样的结构:

{
    title: [
      {lang: “en”, value: “snickers”},
      {lang: “ru”, value: “сниккерс”}
    ]
}

我需要这样的结果:

“snickers”

我完成了查询: $.title[?(@.lang="en")].value

但是没用

JsonPath 总是 returns 一个结果数组,因此您将无法单独获得单个值,例如 "snickers"。不过,您将能够获得 ["snickers"]。要使其正常工作,您需要使用双等号而不是单个等号:

$.title[?(@.lang=="en")].value

另请注意,您可能遇到问题的另一个原因是 json 中的双引号不是标准的双引号字符。根据您使用 json 的方式,您可能还需要将 属性 名称用双引号引起来。 json 标准非常严格,如果您从文本中解析 json,则必须遵循这些规则。这是 json 以这种方式更正的版本:

{
    "title": [
      {"lang": "en", "value": "snickers"},
      {"lang": "ru", "value": "сниккерс"}
    ]
}

我已经使用 http://www.jsonquerytool.com.

使用更正后的 json 测试了上述查询