Rest Assured - deserialize Response JSON as List<POJO>

You can do this:

List<Artwork> returnedArtworks = Arrays.asList(response.getBody().as(Artwork[].class));

The trick is to deserialize JSON to an array of objects (because there is no difference between the JSON string of an array or a list), then convert the array to a list.


this solution works for version 3.0.2 (io.restassured):

  JsonPath jsonPath = RestAssured.given()
     .when()
     .get("/order")
     .then()
     .assertThat()
     .statusCode(Response.Status.OK.getStatusCode())
     .assertThat()
     .extract().body().jsonPath();

  List<Order> orders = jsonPath.getList("", Order.class);

This will extract the objects for a structure like this:

public class Order {

private String id;

public String getId(){
return id; }

public void setId(String id){
this.id = id;
}


}

with the given json:

[ 
{ "id" : "5" }, 
{ "id" : "6" }
]

By using Google's Gson library you can easily parse it to List<Artwork>. Try below code

Gson gson = new Gson();
List<Artwork> returnedArtworks = gson.fromJson(jsonStr, new TypeToken<List<Artwork>>(){}.getType());

//* where jsonStr is the response string(Json) receiving from your Restful webservice