#json-deserialization #rest-assured #pojo
Вопрос:
У меня есть этот json, который я преобразовал в POJO
Файл JSON преобразован в файл POJO
[
{
"postId": 81,
"id": 401,
"name": "cum voluptate sint voluptas veritatis",
"email": "Vella.Mayer@colten.net",
"body": "sit delectus recusandae quinet cupiditate sed ipsum culpa et fugiat abnillo dignissimos quo est repellat dolorum nequenvoluptates sed sapiente ab aut rerum enim sint voluptatum"
},
{
"postId": 81,
"id": 403,
"name": "cum voluptate sint voluptas veritatis",
"email": "Vella.Mayer@colten.net",
"body": "sit delectus recusandae quinet cupiditate sed ipsum culpa et fugiat abnillo dignissimos quo est repellat dolorum nequenvoluptates sed sapiente ab aut rerum enim sint voluptatum"
}
]
Это класс POJO, в который я его преобразовал
public class TodoItem{
private int id;
private boolean completed;
private String title;
private int userId;
Я попытался использовать todo для проверки ответа, что он относится к типу класса, но всегда получал эту ошибку.
Todo todo = response.getBody().as(Todo.class);
Assert.assertTrue(response.statusCode() == 200);
Ошибка
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `io.christdoes.pojo.todo.Todo` out of START_ARRAY token
at [Source: (String)"[
Ответ №1:
Есть 2 вещи, которые вы сделали неправильно:
- POJO, которому ты соответствуешь
- Способ отображения (массив не может быть сопоставлен с одним объектом)
Это было бы
List<TodoItem> todoItems = response.as(new TypeRef<>() {});
POJO (я использую ломбок для генерации геттеров/сеттеров)
import lombok.Data;
@Data
public class TodoItem{
private int postId;
private int id;
private String name;
private String email;
private String body;
}