我有一个用例,需要json路径来返回与其 predicate 匹配的整个json结构。
{
"store" : {
"book" : [
{
"category" : "reference",
"author" : "Nigel Rees",
"title" : "Sayings of the Century",
"price" : 8.95,
},
{
"category" : "fiction",
"author" : "Evelyn Waugh",
"title" : "Sword of Honour",
"price" : 12.99
},
{
"category" : "fiction",
"author" : "Herman Melville",
"title" : "Moby Dick",
"isbn" : "0-553-21311-3",
"price" : 8.99
},
{
"category" : "fiction",
"author" : "J. R. R. Tolkien",
"title" : "The Lord of the Rings",
"isbn" : "0-395-19395-8",
"price" : 22.99
}
],
"bicycle" : {
"color" : "red",
"price" : 19.95
}
},
"expensive" : 10
}
这是我的 json path expression
```
$.store.book[?(@.category in ['reference'])]
返回
[
{
"category" : "reference",
"author" : "Nigel Rees",
"title" : "Sayings of the Century",
"price" : 8.95
}
]
但我想要整条路,如下图所示,
{
"store" : {
"book" : [
{
"category" : "reference",
"author" : "Nigel Rees",
"title" : "Sayings of the Century",
"price" : 8.95
}
]
}
}
1条答案
按热度按时间wlsrxk511#
这不是json路径通常可以做的事情,但请检查您的具体实现。
通常,json path可以返回匹配项或指向它们的路径。不支持按原始结构中的显示嵌套匹配。
然而,您可能能够从路径中推断出您需要什么。该项目的路径将是
$.store.book[0]
. 要重建所需的对象,您需要。。。从这一点来看,如果匹配进一步深入到数组中,而不是在开始时,那么尝试支持这一点似乎会有问题。例如,如果您已匹配
[2]
而不是[0]
,您仍然会得到与您发布的相同的嵌套结构(不是在这里讨论这是如何工作的;只是解释为什么现在没有。)