使用redis时,Jackson反序列时,将LinkedHashMap转成对象(Object类型转成实体)

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

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

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

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

样例:

import com.fasterxml.jackson.databind.ObjectMapper;
 
     ObjectMapper mapper = new ObjectMapper();
     List filterList = mapper.convertValue(listOfObjects, new TypeReference>() { });
虽然效率还是低了,但是比第一种方式少了一步,效率减少了一点。

我的实践是:
ObjectMapper objectMapper = new ObjectMapper();
Book book = objectMapper.convertValue(valueOperations.get(key), Book.class);
System.out.println("从缓存获取" + book);
遗留问题:convertValue有三个方法,分别的使用场景?

原文链接:https://blog.csdn.net/A_Story_Donkey/article/details/81324144

你可能感兴趣的:(使用redis时,Jackson反序列时,将LinkedHashMap转成对象(Object类型转成实体))