【问题标题】:Trying to filter json object for a single value based on the value of other key in Karate API Test Framework尝试根据空手道 API 测试框架中其他键的值过滤单个值的 json 对象
【发布时间】:2021-03-03 20:29:02
【问题描述】:

我认为空手道文档很棒,我已经尝试尽可能多地阅读,但是这件小事现在让我很难过。我认为我想做的事情相当简单,但我失败得很惨。我在这里有一个基于文档中示例的 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 时让我感到不安,而不是文档网站中给出的示例中的单个集合。 我很抱歉,因为这个问题的答案非常简单,但是任何正确方向的提示都将得到极大的赞赏。谢谢!

【问题讨论】:

    标签: json karate


    【解决方案1】:

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

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

    请注意,这也可以:

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

    【讨论】:

    • 太棒了!谢谢!
    • 快速跟进,如果可以的话......而不是上面示例中的数字 233,如果我想使用变量,我是否像 javascript 变量一样使用它'#(myVariable)' 或直接作为myVariable?这两种方法都行不通,我想知道我是否也应该知道第三种方法....
    • @Kumar 首先阅读这个:stackoverflow.com/help/someone-answers - 你的答案就在这里:stackoverflow.com/a/57665550/143475
    猜你喜欢
    • 1970-01-01
    • 2020-12-22
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多