尝试根据空手道 API 测试框架中其他键的值过滤 json 对象以获得单个值
Trying to filter json object for a single value based on the value of other key in Karate API Test Framework
我认为空手道文档很棒,我尝试尽可能多地阅读,但现在这件小事让我很困惑。我认为我想做的事情相当简单,但我失败得很惨。我这里有一个基于文档中示例的 JSON 对象,但稍作修改:
* def cat =
"""
[
{
name: 'Billie',
kittens: [
{ id: 23, nickName: 'Bob' },
{ id: 42, nickName: 'Wild' }
]
},
{
name: 'Billie2',
kittens: [
{ id: 233, nickName: 'Bob2' },
{ id: 422, nickName: 'Wild2' }
]
}
]
"""
我只想找到当 id
为 233 时 nickName
的值。(在这个例子中答案是 Bob2
)
我试过这个:
get[0] cat.kittens[?(@.id==233)]
但我想我错过了一些东西。
让我感到困惑的是,有多个 name
和 kittens
,而不是文档网站中给出的示例中的单个集合。
我很抱歉,因为这个问题的答案非常简单,但任何正确方向的提示都会受到高度赞赏。谢谢!
你很接近。当涉及数组时,通常需要[*]
。
* def temp1 = get[0] cats[*].kittens[?(@.id==233)]
* match temp1.nickName == 'Bob2'
请注意,这也适用:
* def temp2 = get[0] cats..kittens[?(@.id==233)]
* match temp2.nickName == 'Bob2'
我认为空手道文档很棒,我尝试尽可能多地阅读,但现在这件小事让我很困惑。我认为我想做的事情相当简单,但我失败得很惨。我这里有一个基于文档中示例的 JSON 对象,但稍作修改:
* def cat =
"""
[
{
name: 'Billie',
kittens: [
{ id: 23, nickName: 'Bob' },
{ id: 42, nickName: 'Wild' }
]
},
{
name: 'Billie2',
kittens: [
{ id: 233, nickName: 'Bob2' },
{ id: 422, nickName: 'Wild2' }
]
}
]
"""
我只想找到当 id
为 233 时 nickName
的值。(在这个例子中答案是 Bob2
)
我试过这个:
get[0] cat.kittens[?(@.id==233)]
但我想我错过了一些东西。
让我感到困惑的是,有多个 name
和 kittens
,而不是文档网站中给出的示例中的单个集合。
我很抱歉,因为这个问题的答案非常简单,但任何正确方向的提示都会受到高度赞赏。谢谢!
你很接近。当涉及数组时,通常需要[*]
。
* def temp1 = get[0] cats[*].kittens[?(@.id==233)]
* match temp1.nickName == 'Bob2'
请注意,这也适用:
* def temp2 = get[0] cats..kittens[?(@.id==233)]
* match temp2.nickName == 'Bob2'