在 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 测试了上述查询
我有这样的结构:
{
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 测试了上述查询