【问题标题】:query with filter in JsonPath在 JsonPath 中使用过滤器进行查询
【发布时间】:2015-08-17 15:44:41
【问题描述】:

我有这样的结构:

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

我需要这样的结果:

“snickers”

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

但它不起作用

【问题讨论】:

    标签: json jsonpath


    【解决方案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 测试了上述查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-15
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      相关资源
      最近更新 更多