Я пишу тест для API, и в одной конечной точке я получаю JOSN в ответ с несколькими массивами в одном массиве.Могу ли я создать класс POJO, который отображает эти массивы / массивы в объект класса?
Например, в ответ JSON выглядит так:
{
"total": 55,
"limit": 500,
"skip": 0,
"data": [
{
"id": 13,
"email": "probe@gmail.com",
"phone": "121-121-123",
"firstName": "Prob",
"lastName": "Buraz",
"platforms": [
{
"id": 3,
"name": "Dowe Assis",
"url": "ins.probe.com",
"user_platforms": {
"id": 496,
"userId": 13,
"platformId": 100,
"user_id": 82
}
}
], .....
И так далее.Я полагаю, что я могу использовать этот класс для отображения ответа в POJO:
@JsonIgnoreProperties(ignoreUnknown = true)
public class GetUsers {
public Integer total;
public Integer limit;
public List<DataReference> data;
@JsonIgnoreProperties(ignoreUnknown = true)
public static class DataReference{
public int id;
public String email;
public String phone;
public String firstName;
public String lastName;
public List<Platform> platforms;
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Platform{
public Integer id;
public String name;
public String url;
}
}
}
Но в тестовом коде я не могу получить ничего больше, чем элементы данных.Элементы платформ недоступны:
GetUsers users = given()
.header("Authorization",
"Bearer " + adminToken) //
.when()
.get()
.then()//.log().all()
.statusCode(200)//.log().all()
.extract().as(GetUsers.class);
Я могу проверить значения данных массива, например:
assertThat(users.data).extracting(user -> user.email).contains("probe1@gmail.com", probe+2@gmail.com, ... );
Но я не могу получить доступ к любому значению users.data.platform.name или users.data.platforms.id и т. д.
Как получить доступ к элементу платформы для одного из пользователей?
users.data.platforms.name
Как я могу это сделать (получить доступ к данным платформ) для одного или для всех перечисленных пользователей в массиве данных?