【发布时间】:2015-04-25 02:25:35
【问题描述】:
我正在尝试反序列化 JSON 字符串,但我一直遇到 JSON 映射异常。我一直在网上搜索,但运气不佳。
我尝试反序列化的 JSON 响应如下所示:
{
"comments": [{
"id": "fa6491aeb",
"user": {
"userId": "e4dddf5e1",
"username": "UserX",
"name": "UserX",
"profilePhotoUri": ""
},
"message": "8: 23 - UserX",
"timestamp": 1429844781919
},{
"id": "ed3e71",
"user": {
"userId": "20b8f1",
"username": "UserW",
"name": "UserW",
"profilePhotoUri": ""
},
"message": "8: 22 - UserW",
"timestamp": 1429844780250
},
//... more items
],
"canCallerComment": true
}
这是我得到的错误的删减版本:
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of com.test.android.CommentsResponse out of START_ARRAY token
at [Source: [{"user":{"userId":"fa6491aeb", ..........]; line: 1, column: 1]
at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:835)
at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:831)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromArray(BeanDeserializerBase.java:1220)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:165)
...
我尝试按照this post 中的说明包装我的回复,但我仍然遇到同样的错误。从调用堆栈跟踪来看,它似乎与 List
我的 JAVA 类定义如下:
public class Comment {
private String id;
private User user;
private String message;
private long timestamp;
// getter/setters
}
public class CommentResponse {
List<Comment> comments;
boolean canCallerComment = false;
// getter/setters
}
如果有帮助,我使用的是 Jackson 2.5.3 版;目标平台是 Android。
编辑: 下面的火花解决方案是正确的。我在尝试从错误的 Web 服务解析 JSON 时出现拼写错误。
【问题讨论】:
标签: java android json jackson deserialization