如何从REstAssured中的Json数组中获取JSON对象

Kav*_*ana 3 java rest rest-assured

任何人都可以帮我解决这个问题:

我是新手RestAssuredJSON在自动化脚本中处理.我API的反应是JSONArray,

  [{
    "id": 1002,
    "entity": "testcase",
    "fieldName": "TextName",
    "displayName": "Name"
  }, {
    "id": 1003,
    "entity": "testcase",
    "fieldName": "steps",
    "displayName": "TestSteps"
  }]
Run Code Online (Sandbox Code Playgroud)

自动化,验证我需要获取响应.我尝试了下面的一个但没有得到预期的输出

 String API = "/field/entity/testcase"
 Response response = given().auth().preemptive().basic("test.manager",     "test.manager").when().get(API);
    JSONObject JSONResponseBody = new   JSONObject(response.body().asString());
    Assert.assertEquals(JSONResponseBody.getString("fieldName"), "TextName");
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

    JSONArray array = new JSONArray();
    JsonObject JSONResponseBody = array.getJsonObject(0);
Run Code Online (Sandbox Code Playgroud)

提前致谢

Ano*_*lip 8

这种验证可以直接使用restAssured - ValidatableResponseOptions本身来实现

    String API = "/field/entity/testcase"
    given().auth().preemptive().basic("test.manager", "test.manager").
    when().get(API).
    then().assertThat().body("fieldName[0]", equalTo("TextName");
Run Code Online (Sandbox Code Playgroud)

注 - 静态导入后需要"equalTo"验证

import static org.hamcrest.Matchers.equalTo;
Run Code Online (Sandbox Code Playgroud)


Kru*_*tel 4

你应该尝试这个:

String API = "/field/entity/testcase"
Response response = given().auth().preemptive().basic("test.manager", "test.manager").when().get(API);
JSONArray JSONResponseBody = new   JSONArray(response.body().asString());
Assert.assertEquals(JSONResponseBody.getJsonObject(0).getString("fieldName"), "TextName");
Run Code Online (Sandbox Code Playgroud)