使用节点JSONPath,如何从子节点值
获取父节点名称
{
"store": {
"book": [
{
"id":"1",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"id":"2",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
}
]
}
}
我使用这个表达式来根据值识别子节点,我想用这个子节点来查找父节点
$.[?(@.id =="1")]
答案 0 :(得分:2)
您没有指定JSON Path的哪个实现,但是使用Gatling(Scala)和JayWay(Java),您可以使用嵌套过滤器在返回父级,祖父级或其他内容时按子级进行过滤。这是一个示例:
使用此JSON:
{
"a": {
"b": {
"c": {
"d": {
"e": "foo"
}
},
"something": "bar"
}
}
}
这条道路:
$.a.b[?(@.c[?(@.d[?(@.e == "foo")])])].something
返回:
[ "bar" ]
我可以通过使用表达式来检索b
以获取较低的节点作为过滤器。
其他一些实现错误地表达了这些表达式。
答案 1 :(得分:0)
不幸的是,JSONpath不支持按子对象内容中的参数进行搜索: http://goessner.net/articles/JsonPath/
答案 2 :(得分:0)
使用 JayWay 可以,但 Jayson 提供的查询是错误的,因为如果您将值更改为“foo2”,它仍将返回“bar”。
这可以在 http://jsonpath.herokuapp.com/ 上测试。
查询:
$.a.b[?(@.c.d.e=="foo")].something
返回:
["bar"]
查询:
$.a.b[?(@.c.d.e=="foo2")].something
返回:
[]