基于子元素条件使用jsonpath获取根元素

a11xaf1n  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(478)

我正在使用jaywayjsonpath库从json下面获取正确的id,我的 phoneNumbers 类型为“iphone”。
一般来说,我想知道在子json对象中指定特定条件时如何从块的根元素中查找内容。
我尝试了下面的表达式,分别选择与iphone类型相关联的块和id列表,但无法找到根元素 id 属于json对象,我的电话类型是iphone。有人能指引我吗?我要去拿那个 id 作为这个问题的答案。
要获取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",
"number": "0123-4567-8888"
},
{
"type": "y",
"number": "0123-4567-8910"
}
]
}
]

uqdfh47h

uqdfh47h1#

我想你想让你的表情看起来更深刻。
首先,在电话号码列表中找到有iphone的对象。然后选择ID。
尝试 $[?(@.phoneNumbers[*].type=="iPhone")].id .
编辑
它看起来像javajsonpath库(我认为您正在使用它)支持许多函数。它没有列出 contains() ,但你可以试试 anyof 操作员: $[?(@.phoneNumbers[*].type anyof ["iPhone"])].id 请注意,这肯定是特定于实现的,可能无法与任何其他库一起使用。

相关问题