简体   繁体   English

如何使用 RestAssured 断言 JSON 二维数组?

[英]How to assert JSON 2D array using RestAssured?

Using RestAssured and I am truggling to assert on a 2D String array in the response body.使用 RestAssured 并且我正在努力断言响应正文中的 2D 字符串数组。 I have response JSON as:我将 JSON 回复为:

{
    "status": {
        "code": "00",
        "message": "SUCCESS",
        "timestamp": "2021-06-14T11:25:34Z"
    },
    "data": {
        "data": [
            [
                "elementZero",
                "elementOne",
                "elementTwo"
            ]
        ]
    }
}

And my code is as follows我的代码如下

    given()
            .auth().oauth2(token)
            .when()
            .pathParam("orderId", orderId)
            .get("/getScreeningsForOrder/{orderId}")
            .then()
            .statusCode(200)
            .contentType(ContentType.JSON)
            .assertThat()
            .body("data.data[0]", arrayContainingInAnyOrder("elementZero", "elementOne", "elementTwo"))
            .body("status.code", equalTo("00"))
            .body("status.message", equalTo("SUCCESS"))
            .body("status.timestamp", Matchers.startsWith(expectedTimestamp_yyyyMMdd))
            .extract()
            .response();

I get the following error:我收到以下错误:

Expected: ["elementZero", "elementOne", "elementTwo"] in any order预期:["elementZero", "elementOne", "elementTwo"] 任意顺序
Actual: <[elementZero, elementOne, elementTwo]>实际:<[elementZero, elementOne, elementTwo]>

How can I assert on data.data to make sure it contains one element that matches my array?如何断言 data.data 以确保它包含一个与我的数组匹配的元素?

Try these ones - "data.data[0][0]" or "data.data[0].[0]"试试这些—— "data.data[0][0]""data.data[0].[0]"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM