2014-03-05 41 views
0

我正在使用傑克遜2.3和我有一些問題反序列化。反序列化傑克遜2.3返回null對象

我有這些類和接口:

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); 

也不例外是s howed和follower和用戶爲空。我已經搜索了一個解決方案,但我只找到以前版本的Jackson的文檔。我怎樣才能反序列化呢?

謝謝!

這是我試圖解析JSON:

"type": "Follow", 
"value": { 
     "id": 205, 
     "time_creation": "2014-03-04T14:54:53+0100", 
     "follower": { 
      "id": 62, 
      "username": "[email protected]", 
      "fullname": "Meri Riera", 

     }, 
     "user": { 
      "id": 24, 
      "username": "[email protected]", 
      "fullname": "Héctor", 

     } 
    } 
+0

** valueNode **結構如何看起來像? – tmarwen

+0

我已更新我的問題 – user3382644

回答

0

你可以用這個嘗試:

mapper.readValue(valueNode.traverse(objectCodec), FollowValue.class); 

我不知道這是否是最好的方法,但它爲我工作。

0

由於您jsonc數據不FollowValue格式的格式適合我認爲它不會被解析。

嘗試過,你實例化對象ObjectMapper@JsonRootName(value = "value")

註釋你的主要實體,它配置:

mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); 

希望這將解決您的問題。

+0

對不起,不起作用 – user3382644

+0

仍然有空引用? – tmarwen