如何解决根据子元素条件使用jsonpath获取根元素
我正在与Jayway JsonPath库一起从我的phoneNumbers
类型为'iPhone'的JSON下面获取正确的'id'。
通常,我想知道在子JSON对象中指定了特定条件时如何从块的根元素中查找内容。
我尝试了以下表达式,分别选择了与iPhone类型关联的块以及ID列表,但是我无法进入属于JSON对象的根元素id
,其中我的手机类型为iPhone 。有人可以指导我吗?对于这个问题,我需要将id
设为1。
要获取ID列表:$[*].id
要获取与iPhone类型相对应的json对象:$[*].phoneNumbers[?(@.type=='iPhone')]
[
{
"id": "1","phoneNumbers": [
{
"type": "iPhone","number": "0123-4567-8888"
},{
"type": "home","number": "0123-4567-8910"
}
]
},{
"id": "2","phoneNumbers": [
{
"type": "x",{
"type": "y","number": "0123-4567-8910"
}
]
}
]
解决方法
我认为您希望您的表情更深入。
首先,在电话号码列表中找到具有iPhone的对象。然后只需选择ID。
尝试$[?(@.phoneNumbers[*].type=="iPhone")].id
。
修改
看起来Java JsonPath库(我想您正在使用它)支持许多功能。它没有列出contains()
,但是您可以尝试使用anyof
运算符:
$[?(@.phoneNumbers[*].type anyof ["iPhone"])].id
请注意,这绝对是特定于实现的,可能无法与其他任何库一起使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。