【发布时间】:2015-01-05 06:18:37
【问题描述】:
我有一个 Pojo 对象,它由 Jersey 使用 jackson 序列化:
public class BookOfFriendsAnswer {
private Map<String, List<BookSummary>> books;
public BookOfFriendsAnswer() {
}
public BookOfFriendsAnswer(Map<String, List<BookSummary>> books) {
this.books = books;
}
public Map<String, List<BookSummary>> getBooks() {
return books;
}
public void setBooks(Map<String, List<BookSummary>> books) {
this.books = books;
}
}
序列化产生一个像这样的 JSon:
{
"books": {
"entry": [
{
"key": "54567bbce4b0e0ef9379993e",
"value": "BookSummary{id='54567bbde4b0e0ef9379993f', title='title 1', authors=[Steve,James] } BookSummary{id='54567bd9e4b0e0ef93799940', title='Title 2', authors=[Simon, Austin]}"
}
]
}
}
但是,当我尝试像这样反序列化来自客户端的消息时:
mapper.readValue(json, clazz)
我收到以下错误:
无法识别的字段“key”(com.example.server.api.BookSummary 类),未标记为可忽略
不知道是服务端生成的JSon还是客户端反序列化的问题。
你知道问题出在哪里以及如何解决吗?
非常感谢
【问题讨论】:
-
1. value 应该是一个数组,而不是字符串 2. BookSummary 类的字段应该与 value 3 兼容。您必须将哪个 json 字段提供反序列化。
-
你能发布你的依赖
标签: java json jersey jackson jax-rs