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