java arrays json deserialization rest-assured

java - REST Assured-Deserialización de lista genérica



arrays json (5)

Digamos que tengo una clase de Java Person :

class Person { String name; String email; }

Con REST Assured, puede deserializar este objeto JSON

{"name":"Bob", "email":"[email protected]"}

a una instancia de Person Java utilizando

Person bob = given().when().get("person/Bob/").as(Person.class);

¿Cómo se usa REST Assured para deserializar esta matriz JSON?

[{"name":"Bob", "email":"[email protected]"}, {"name":"Alice", "email":"[email protected]"}, {"name":"Jay", "email":"[email protected]"}]

en una List<Person> ? Por ejemplo, esto sería útil:

List<Person> persons = given().when().get("person/").as(...);


Encontré una manera de lograr lo que quería:

List<Person> persons = given().when().get("person/").as(Person[].class);

ACTUALIZACIÓN: al usar Rest-Assured 1.8.1, parece que la conversión a la lista ya no es compatible. Necesitas declarar una matriz de objetos como esta:

Person[] persons = given().when().get("person/").as(Person[].class);


Para aquellos que descubrieron que la respuesta aceptada ya no funciona.

List<Entity> list = new ArrayList<>(); list = given() .contentType(CONTENT_TYPE) .when() .get(getRestOperationPath()) .then() .extract().body().as(list.getClass());

con suerte, usted comprende que getRestOperationPath está devolviendo la ruta de la operación de descanso; y CONTENT_TYPE es el marcador de posición para su tipo de contenido (aplicación / json, por ejemplo)

upd: verificó diferentes versiones, el comportamiento varía según la versión, por lo que es posible que desee probar diferentes enfoques


Si alguien todavía está mirando. Usando Java 1.8 y RestAssured 2.9 la solución es realmente simple y no arroja "Advertencia no verificada".

return Arrays.asList(given() .when() .get("restPath") .then() .extract() .response() .body() .as(Player[].class));


Si no se siente cómodo con JsonPath, sugeriría usar cualquier serialización / des-serialización de Java utilizando GSON o Jackson.


También puede hacer esto si está interesado en usar "expect ()"

expect(). body("get(0).firstName", equalTo("Mike")). when(). get("person/");

Este era mi caso