Ответ
В Rest Assured для извлечения списка из JSON-ответа API чаще всего используется комбинация методов .extract() и .jsonPath(). Это позволяет декомпозировать сложный ответ и работать с данными в тестах.
Базовый пример извлечения списка строк:
List<String> userNames = given()
.when()
.get("/api/users")
.then()
.extract()
.jsonPath()
.getList("name", String.class);
// Предполагается, что ответ имеет структуру: [ {"name": "Alice"}, {"name": "Bob"} ]
Извлечение списка сложных объектов (POJO):
// Предварительно определенный класс User
List<User> allUsers = given()
.get("/api/users")
.jsonPath()
.getList("", User.class); // Пустой путь "" указывает на корень массива
Альтернативный способ с .as() для десериализации всего ответа:
User[] usersArray = given()
.get("/api/users")
.as(User[].class);
List<User> users = Arrays.asList(usersArray);
Ключевые моменты для QA-инженера:
.extract()— начинает процесс извлечения данных из валидированного ответа..jsonPath()— предоставляет доступ к мощному инструменту JsonPath для навигации по JSON (например,getList("users[0].projects")).- Типизация — всегда указывайте ожидаемый класс (
String.class,User.class), чтобы избежать ошибокClassCastException. - Валидация перед извлечением — часто имеет смысл сначала проверить статус-код (
.statusCode(200)), а затем извлекать данные.