空手道:遍历复杂的JSON查找匹配项 [英] Karate: Traverse thru a complex JSON to find a match

查看:52
本文介绍了空手道:遍历复杂的JSON查找匹配项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在达到一个API终点,并得到如下所示的内容.

I am hitting an API end point and getting something like below.

{
    "emp": {
        "id": "123",
        "firstNm": "test",
        "lastNm": "last",
        "dob": "200-01-01",
        "gender": {
            "code": "F",
            "name": "Female",
            "description": "Female"
        },
        "test1": [
            {
                "tes2": "F50045A3B994FB2BDF4E3D3FC906F592",
                "t2": "a23",
                "test3": {
                    "code": "432",
                },
                "ind": [
                    "ABC",
                    "BCD",
                ]
            }
        ]
    }
}

我要匹配数组中的元素

"ind": [
    "ABC",
    "BCD",
]

我尝试了以下方法:

 Feature: test
Background:
        * url BaseUrl
        * configure headers = read('classpath:headers.js')
Scenario Outline: test
    Given path '/path'
    And param id = <id>
    When method get
    Then status 200

        * def json = response
        * def has = {ind:['#string'] }
        * def indicator = { ind: '#[] has' }
        * match json.member == '#[] indicator'

Examples:
    |   id   |
    | '1234' |

但观察到以下异常:

预期:'#[] ind',原因:不是数组或列表有人可以帮忙吗?

expected: '#[] ind', reason: not an array or list Can someone please help?

推荐答案

我并没有真正遵循您的逻辑,因为指标不在json响应或定义的变量中,而是到达ind数组的路径是emp.test1 [0] .ind

I am not really following your logic since indicators is not in the json response or defined variable but to get to the ind array the path is emp.test1[0].ind

如果要匹配具有ABC和BCD的阵列,则应执行以下操作

if you want to match that the array has ABC and BCD you would do the following

* match response.emp.test1[0].ind == ['ABC', 'BCD']

这篇关于空手道:遍历复杂的JSON查找匹配项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆