我有这样的结构:
{
title: [
{lang: “en”, value: “snickers”},
{lang: “ru”, value: “сниккерс”}
]
}
我需要得到这样的结果:
“snickers”
我完成了查询:
$.title[?(@.lang="en")].value
但它不起作用
答案 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测试了上述查询。