我正在使用Jackson 2.3而且我在反序列化方面遇到了一些问题。
我有这些类和接口:
FollowValue:
public class FollowValue implements Value{
@JsonProperty("id");
public long id;
@JsonProperty("time_creation")
@JsonDeserialize(using = DateDeserializer.class)
public Date timeCreation;
@JsonProperty("follower")
private User follower;
@JsonProperty("user")
private User user;
@Override
public long getId() {
return id;
}
@Override
public Date getTimeCreation() {
return timeCreation;
}
}
值:
public interface Value {
public long getId();
public Date getTimeCreation();
}
当我像这样阅读FollowValue时:
FollowValue value = mapper.readValue(valueNode.traverse(), FollowValue.class);
没有显示异常,追随者和用户为空。我搜索过一个解决方案,但我只找到以前版本的Jackson的文档。我怎样才能反序化呢?
谢谢!
这是我试图解析的JSON:
"type": "Follow",
"value": {
"id": 205,
"time_creation": "2014-03-04T14:54:53+0100",
"follower": {
"id": 62,
"username": "email@email.com",
"fullname": "Meri Riera",
},
"user": {
"id": 24,
"username": "email@email.com",
"fullname": "Héctor",
}
}
答案 0 :(得分:0)
由于你的jsonc数据不适合FollowValue
格式,我认为它不会被解析。
尝试使用@JsonRootName(value = "value")
然后在实例化ObjectMapper
对象后,使用以下命令对其进行配置:
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
希望这能解决您的问题。
答案 1 :(得分:0)
你可以试试这个:
mapper.readValue(valueNode.traverse(objectCodec), FollowValue.class);
我不知道这是否是最好的方法,但它对我有用。