在JsonPath中使用过滤器进行查询

时间:2015-08-17 15:44:41

标签: json jsonpath

我有这样的结构:

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

我需要得到这样的结果:

“snickers”

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

但它不起作用

1 个答案:

答案 0 :(得分:1)

JsonPath总是返回一个结果数组,因此您无法单独获取单个值,例如"snickers"。你可以获得["snickers"]。要使其正常工作,您需要使用双等号而不是单个符号:

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

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

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

我已使用http://www.jsonquerytool.com使用更正的json测试了上述查询。