Javao中使用Jackson反序列時,將LinkedHashMap轉成對象的方法(將任何Object類型轉成實體)

可能存在這樣一種狀況,Jackson已經知足了大部分的序列化和反序列化工做,可是對於複雜的泛型實體估計未必能如願的正常反序列,而此時對於一些泛型裏面的實體對象就會反序列化成LinkedHashMap類型的。json

一樣,這個類型不能直接強制轉換成想要的實體,此時要解決此類問題的思路以下:app

一、繼續將這個LinkedHashMap進行序列化程JSON,而後再反序列化,可是這樣效率就低了。spa

二、直接使用自帶的convertValue方法將這個LinkedHashMap以Object類型轉成想要的實體。code

樣例:對象

POJO pojo = mapper.convertValue(singleObject, POJO.class);
// or:
List<POJO> pojos = mapper.convertValue(listOfObjects, new TypeReference<List<POJO>>() { });

雖然效率仍是低了,可是比第一種方式少了一步,效率減小了一點。blog

 

參考:get

https://stackoverflow.com/questions/15430715/casting-linkedhashmap-to-complex-objecthash

https://stackoverflow.com/questions/31669517/jackson-unmarshall-custom-object-instead-of-linkedhashmapio

https://stackoverflow.com/questions/41305787/jackson-json-object-mapper-deserializes-to-linkedhashmap-instead-of-hashmapast

相關文章
相關標籤/搜索