Search code examples
rest-assuredrest-assured-jsonpath

Get size or length of json array response (restAssured Response interface)


We have REST API automation scripts using RestAssured. In this declared response object as public static Response response; and retrieving the response data using response.jsonPath().get("id"), during this trying to even get the size or length of the id, even need to get details about tags array.

JSON Response:

   [
  {
    "id": 1,
    "name": "test1",
    "tags": [
      {
        "tagType": "details1",
        "tag": {
          "description": null
        }
      }
    ]
  },
  {
    "id": 2,
    "name": "test2",
    "tags": [
      {
        "tagType": "details2",
        "tag": {
          "description": null
        }
      }
    ]
  }
]

Tried below ways:

public static Response response;

List<String> resIDs = response.jsonPath().get("id");

System.err.println("Retrieved IDs from Response: " + resIDs);

O/P: is [1,2,3,4,5,6,7]

Tried as resIDs.size(), that also no response printed.

List<Object> size = response.jsonPath().getList("$");

System.err.println("ArraySize for IDs from Response: " + size);

or

int size = response.jsonPath().getList("$").size();

O/P: Not printed/nothing shown

Please guide how to get the size/length.


Solution

  • I don't seem to find any issue in your code, I just changed a bit to run locally and its working fine. Here's my code

    public class S_62591968 {
    
        public static Response postCallWithJsonBodyParam(String URL) {
            return RestAssured.given().relaxedHTTPSValidation().contentType(ContentType.JSON).request().when().get(URL);
        }
    
        public static void main(String[] args) {
    
            String url_endPoint = "http://localhost:8089/def/abc";
            Response response = postCallWithJsonBodyParam(url_endPoint);
    
            List<String> resIDs = response.jsonPath().get("id");
            System.out.println("Retrieved IDs from Response : " + resIDs);
            System.out.println("ArraySize for IDs from Response : " + resIDs.size());
        }
    }
    

    Console :

    Retrieved IDs from Response : [1, 2]
    ArraySize for IDs from Response : 2