1
我有一個簡單的POJO喜歡的Java地圖反序列化與傑克遜
public class Employee
{
int level;
int salary;
Map<String, String> details; // HashMap
}
此類的序列化對象看起來像
{"level":1,"salary":30000, "details":{"address":"ADDRESS", "phone":"12345678"}}
假設上述JSON字符串存儲在一個名爲json
的Java String變量, 通過以下Jackson語句進行反串行化時
Employee employee = new ObjectMapper().readValue(json, Employee.class);
該對象已正確創建,沒有發生異常,字段「level」和「salary」正確填充,但「details」字段(最初爲HashMap)始終爲空。
如何正確反序列化它?
如果使用具有正確類型的getter方法(無論其名稱如何),那麼您就解決了這個問題。更酷的是,您可以通過@JsonDeserialize註釋告訴Jackson將其反序列化爲您想要的精確Map類型,例如,在相應的字段聲明之前加入\t @JsonDeserialize(as = HashMap.class)。謝謝! – PNS 2011-12-22 13:20:44
即使使用@JsonDeserialize註釋,getter方法也不是必需的。 – PNS 2011-12-24 08:48:59
嗯,我嘗試使用JSONDeserialize作爲@PNS說,但我仍然得到JsonMappingException「無法找到類型的(映射)鍵解串器...」嗯 – Ted 2013-01-26 23:34:28