【发布时间】:2015-08-17 15:44:41
【问题描述】:
我有这样的结构:
{
title: [
{lang: “en”, value: “snickers”},
{lang: “ru”, value: “сниккерс”}
]
}
我需要这样的结果:
“snickers”
我完成了查询:
$.title[?(@.lang="en")].value
但它不起作用
【问题讨论】:
我有这样的结构:
{
title: [
{lang: “en”, value: “snickers”},
{lang: “ru”, value: “сниккерс”}
]
}
我需要这样的结果:
“snickers”
我完成了查询:
$.title[?(@.lang="en")].value
但它不起作用
【问题讨论】:
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 测试了上述查询。
【讨论】: