嵌套的JSON反序列化问题
当需要反序列化的JSON数据中存在具体类型未知的数据时,会出现无法转换的问题,此时可以进行二次转换
比如这个类:
public class RedisData {
private LocalDateTime expireTime;
private Object data;
}
这样是不行的
RedisData redisData = JSONUtil.toBean(shopJson, RedisData.class);
Shop shop = (Shop) redisData.getData();
LocalDateTime expireTime = redisData.getExpireTime();
会报错:
java.lang.ClassCastException: cn.hutool.json.JSONObject cannot be cast to com.hmdp.entity.Shop
这样就不会报错了
ofcource也可以用jacson工具包中的objectMapper实现,通过使用泛型+自定义反序列化器的方式解决一切问题
RedisData redisData = JSONUtil.toBean(shopJson, RedisData.class);
Shop shop = JSONUtil.toBean((JSONObject) redisData.getData(), Shop.class);
LocalDateTime expireTime = redisData.getExpireTime();