如何在空手道中使用 if 条件

How to use if condition in Karate

假设我有以下 Json 响应

[
    {
        id: 1,
        name: "John",
        password: "JohnsPassword54",
    },
    {
        id: 2,
        name: "David",
        password: "DavidsPassword24",
    }
]

那我怎样才能提取名为 David 的数组来做进一步的验证呢?

例如我想说 if name == David 然后保存 id

我在 Json 表达式计算中找到了解决方案 -

def user = $..[?(@.name == 'David')]

那我就可以用下面的-

def userId = user[0].id

干得好:)掌握Json-路径是充分利用空手道的关键!

只是为了演示,这里是另一个选项,使用 get 关键字从数组 returned 中获取第一个元素,作为 Json-Path 通配符始终搜索 return 数组:

* def response = 
"""
[
    {
        id: 1,
        name: "John",
        password: "JohnsPassword54"
    },
    {
        id: 2,
        name: "David",
        password: "DavidsPassword24"
    }
]
"""
* def userId = get[0] response $[?(@.name == 'David')].id
* match userId == 2