我想知道是否有可能在子级过滤复杂对象(而不是简单的字符串),并检索那些子级与预测匹配的父节点。
以Jayway的github项目https://github.com/jayway/JsonPath#path-examples的书店为例。
如果我将“作者”更改为更复杂的对象,例如:
"authors": [
{
"firstName": "Nigel",
"lastName": "Rees"
},
{
"firstName": "Evelyn",
"lastName": "Waugh"
}
]
这样,我怎么能找回“所有由姓氏为'Waugh'的人写的书”
?
我试图和Json Evaluator(http://jsonpath.herokuapp.com/)一起使用
$.store.book[?(@.authors[?(@.lastName == 'Waugh')])]
,但过滤器似乎无法正常工作。我猜Jayway不允许嵌套谓词。如果是这样,是否有任何解决方法?另外,如果还有其他JsonPath Java实现可以帮助您,我也希望学习它。
先感谢您。
最佳答案
看起来如果不为父数组(即作者)提供索引值就无法实现。我知道它可能无法完全解决问题。我只是想确认当另一个数组中有数组时的限制。
$.store.book[?(@.authors[0].lastName == 'Waugh')]