json-deserialization - com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从 START_ARRAY 令牌中反序列化“Todo”实例
问题描述
我有这个 json,我将它转换为 POJO
JSON 转换为 POJO 文件
[
{
"postId": 81,
"id": 401,
"name": "cum voluptate sint voluptas veritatis",
"email": "Vella.Mayer@colten.net",
"body": "sit delectus recusandae qui\net cupiditate sed ipsum culpa et fugiat ab\nillo dignissimos quo est repellat dolorum neque\nvoluptates 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 qui\net cupiditate sed ipsum culpa et fugiat ab\nillo dignissimos quo est repellat dolorum neque\nvoluptates 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)"[
解决方案
你做错了两件事:
- 您正在匹配的 POJO
- 映射方式(数组无法映射到单个对象)
这将是
List<TodoItem> todoItems = response.as(new TypeRef<>() {});
POJO(我使用 lombok 生成 getter/setter)
import lombok.Data;
@Data
public class TodoItem{
private int postId;
private int id;
private String name;
private String email;
private String body;
}
推荐阅读
- sharepoint - 如何从 PowerApps 上的 SharePoint Online 列表中选择特定视图
- python - 如何使用 matplotlib 在单击和悬停时显示散点值?我是 matplotlib 的新手
- autohotkey - 如何在 Autohotkey 中将 CAPSLOCK 映射到 ESC 和 ESC 到 CAPSLOCK?
- c# - 当通过 datacontext 更改 selecteditem 时,WPF Combobox 正在旧对象上设置新对象的值
- java - 无效的 cookie 标头:Airtable
- excel - 如果不同列中同一行的 2 个单元格中的特定值
- jquery - 将整个列值显示为 jquery 数据表中的密码字段
- typescript - 如何推断泛型参数的属性类型并映射到另一种类型
- sql - 删除除非语句
- javascript - 如何将 JS 中的自定义事件用于 Angular 组件?