Java 如何从重新发布的JSON数组中获取JSON对象

Java 如何从重新发布的JSON数组中获取JSON对象,java,rest,rest-assured,Java,Rest,Rest Assured,有人能帮我解决这个问题吗: 我不熟悉在自动化脚本中重新启动和处理JSON。 我有一个API,它的响应是JSONArray,即 [{ "id": 1002, "entity": "testcase", "fieldName": "TextName", "displayName": "Name" }, { "id": 1003, "entity": "testcase", "fieldName": "steps", "displ

有人能帮我解决这个问题吗:

我不熟悉在自动化脚本中重新启动
和处理
JSON
。 我有一个
API
,它的响应是
JSONArray
,即

  [{
    "id": 1002,
    "entity": "testcase",
    "fieldName": "TextName",
    "displayName": "Name"
  }, {
    "id": 1003,
    "entity": "testcase",
    "fieldName": "steps",
    "displayName": "TestSteps"
  }]
自动化时,为了验证,我需要获取响应。 我尝试了下面的一个,但没有得到预期的输出

 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");
我也试过这样做:

    JSONArray array = new JSONArray();
    JsonObject JSONResponseBody = array.getJsonObject(0);
谢谢你的帮助,你应该试试这个:

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");

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

    String API = "/field/entity/testcase"
    given().auth().preemptive().basic("test.manager", "test.manager").
    when().get(API).
    then().assertThat().body("fieldName[0]", equalTo("TextName");
注- 静态导入后需要“equalTo”验证

import static org.hamcrest.Matchers.equalTo;

作为另一种方法,我可能会这样做:

ValidatableResponse statusResponse = givenJsonRequest().when()
    .get("/field/entity/test").then();
ArrayList<Map<String,?>> jsonAsArrayList = statusResponse.extract()
    .jsonPath().get("");
Optional<Map<String,?>> filtered = jsonAsArrayList.stream()
    .filter(m -> m.get("fieldName1").equals("Whatever1"))
    .filter(m -> m.get("jsonObject").toString().contains("Whatever2"))
    .findFirst();
Assert.assertTrue(filtered.isPresent(), "Test expected a result after filtering.");
ValidatableResponse statusResponse=givenJsonRequest().when()
.get(“/field/entity/test”).then();
ArrayList jsonAsArrayList=statusResponse.extract()
.jsonPath().get(“”);
可选筛选=jsonAsArrayList.stream()
.filter(m->m.get(“fieldName1”).equals(“Whatever1”))
.filter(m->m.get(“jsonObject”).toString()包含(“Whatever2”))
.findFirst();
Assert.assertTrue(filtered.isPresent(),“过滤后测试预期结果”);