2016-12-02 47 views
2

我不知道是否可以过滤子级别的复杂对象(不是简单的字符串),并检索那些子节点与预测匹配的父节点。Jayway是否支持儿童级过滤器,返回父节点?

从Jayway的github项目中获取书店示例:https://github.com/jayway/JsonPath#path-examples

如果我要改变“作者”到更复杂的物体,像以下:

"authors": [ 
    { 
     "firstName": "Nigel", 
     "lastName": "Rees" 
    }, 
    { 
     "firstName": "Evelyn", 
     "lastName": "Waugh" 
    } 
    ] 

就这样,我怎么能找回“所有书籍与沃的”最后的名字写有人那'“ ?

我试图玩Json Evaluator(http://jsonpath.herokuapp.com/)使用类似$.store.book[?(@.authors[?(@.lastName == 'Waugh')])] ,但它似乎像过滤器不起作用。我猜Jayway不允许嵌套谓词。如果是这样的话,会不会有解决方法?

此外,如果有任何其他JsonPath的Java实现可以帮助,我很想学习它。

预先感谢您。

回答

2

看起来像没有提供父数组(即作者)的索引值就无法实现。我知道它可能无法完全解决问题。我只是想在另一个数组内部有数组时确认限制。

$.store.book[?(@.authors[0].lastName == 'Waugh')] 
+0

谢谢您的输入。是的,我以循环的方式结束了我需要的外层节点。和你一样,我想知道这是否是Jayway JsonPath的限制。 –

+0

好。如果有帮助请接受答案。 – notionquest