Javao中使用Jackson反序列时,将LinkedHashMap转成对象的方法(将任何Object类型转成实体)

可能存在这样一种情况,Jackson已经满足了大部分的序列化和反序列化工作,但是对于复杂的泛型实体估计未必能如愿的正常反序列,而此时对于一些泛型里面的实体对象就会反序列化成LinkedHashMap类型的。

同样,这个类型不能直接强制转换成想要的实体,此时要解决此类问题的思路如下:

1、继续将这个LinkedHashMap进行序列化程JSON,然后再反序列化,但是这样效率就低了。

2、直接使用自带的convertValue方法将这个LinkedHashMap以Object类型转成想要的实体。

样例:

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

虽然效率还是低了,但是比第一种方式少了一步,效率减少了一点。

 

参考:

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

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

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

posted @ 2017-12-03 19:44  EasonJim  阅读(17884)  评论(2编辑  收藏  举报