How to fetch JSON object from Json array in REstAssured

Kavana picture Kavana · Feb 8, 2016 · Viewed 24.5k times · Source

Can anyone please help me to solve this scenario:

I am new to RestAssured and handling JSON in our automation script. I have an API whose response is JSONArray i.e.,

  [{
    "id": 1002,
    "entity": "testcase",
    "fieldName": "TextName",
    "displayName": "Name"
  }, {
    "id": 1003,
    "entity": "testcase",
    "fieldName": "steps",
    "displayName": "TestSteps"
  }]

While automation, for verification i need to fetch the reponse. I have tried the below one but not getting expected output

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

and also i tried with this:

    JSONArray array = new JSONArray();
    JsonObject JSONResponseBody = array.getJsonObject(0);

Thanks Inadvance

Answer

Anoop Philip picture Anoop Philip · Jun 23, 2016

These kind of validation can achieve directly using restAssured - ValidatableResponseOptions itself

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

Note - "equalTo" validation needs following static import

import static org.hamcrest.Matchers.equalTo;