如何从jsonarray检查特定的json数组参数值

时间:2018-03-20 08:27:01

标签: java json rest-assured rest-assured-jsonpath jsonapi-resources

我正在起诉我的apis自动化,这是我的jsonResponse: -

{
    "al": [{
            "aid": 1464,
            "_r": "Bus Stand,",
            "_l": "spaze it park2,",
            "_c": ",",
            "_s": "Haryana,",
            "co": "India,",
            "pc": "122001",
            "fa": "Sona Road, spaze it park, Gurgaon, Haryana,",
            "fn": "225,",
            "lm": "omax mall",
            "pa": null,
            "at": 1
        },
        {
            "aid": 1462,
            "_r": "Bus Stand,",
            "_l": "spaze it park2,",
            "_c": "Gurgaon,",
            "_s": "Haryana,",
            "co": "India,",
            "pc": "122001",
            "fa": "Sona Road, spaze it park, Gurgaon, Haryana,",
            "fn": "225,",
            "lm": "omax mall",
            "pa": null,
            "at": 1
        },
        {
            "aid": 1461,
            "_r": null,
            "_l": null,
            "_c": "Gurgaon1",
            "_s": "",
            "co": null,
            "pc": "122003",
            "fa": "Gurgaon, HRyana, 122003",
            "fn": "",
            "lm": "",
            "pa": null,
            "at": -1
        },
        {
            "aid": 1460,
            "_r": "Bus Stand,",
            "_l": "spaze it park2,",
            "_c": "Gurgaon,",
            "_s": "Haryana,",
            "co": "India,",
            "pc": "122001",
            "fa": "Sona Road, spaze it park, Gurgaon, Haryana,",
            "fn": "225,",
            "lm": "omax mall",
            "pa": null,
            "at": 2
        }
    ]
}

现在我想为jasonarray设置断言“援助”:1460,就像lm的值,等参数。我们如何在放心的情况下做同样的事情。也想知道jsonarray的索引位置有“援助”:1460。 请帮帮我!!

2 个答案:

答案 0 :(得分:1)

在内置断言中使用REST Assured测试JSON响应相当容易,但在您的情况下,您还需要数组的索引号,我不确定它是否可以找到。我想一下这些行将有所帮助

Response res = given().
            get(url).
            then().
            statusCode(200).
            extract().
            response();


JsonArray arr=new JsonParser().parse(res.jsonPath().get("al").toString()).getAsJsonArray();

然后,您可以使用JSONArray查找索引以及相应的元素。

答案 1 :(得分:0)

关于断言,您可以使用RestAssured内置GPath查询语法:

RestAssured.given()
        .baseUri("http://your.server.com")
        .accept(ContentType.JSON)
        .get("/jsonFile")
        .then()
        .statusCode(200)
        .body("al.findIndexOf { it.aid == 1461 }", is(2))       // findIndexOf returns zero-based list index
        .body("al.find { it.aid == 1461 }._c", is("Gurgaon1"))
        .body("al.find { it.aid == 1461 }.pc", is("122003"));