尝试根据空手道 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)] 但我想我错过了一些东西。

让我感到困惑的是,有多个 namekittens,而不是文档网站中给出的示例中的单个集合。 我很抱歉,因为这个问题的答案非常简单,但任何正确方向的提示都会受到高度赞赏。谢谢!

你很接近。当涉及数组时,通常需要[*]

* def temp1 = get[0] cats[*].kittens[?(@.id==233)]
* match temp1.nickName == 'Bob2'

请注意,这也适用:

* def temp2 = get[0] cats..kittens[?(@.id==233)]
* match temp2.nickName == 'Bob2'