java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to

1,818 阅读1分钟

背景

今天在往Redis存储hash结构数据的过程中,在将数据取出来时报错。代码如下

cartOps.put(skuId.toString(), s);  //往redis中存储数据(JSON序列化)
String o = (String) cartOps.get(skuId.toString());   // 取出redis中的数据,Json格式
CartItem item = JSON.parse(o);    // 报错,JSON转化为对象报错。

解决

fastJson的解析有多个方法,原来是方法调用错误了,查看源码发现redis中存储的JSON数据,要反序列化应该调用parseObject(parseObject(String text, TypeReference<T> type) 这个方法。

如下:

CartItem item = JSON.parseObject(o, new TypeReference<CartItem>() {

报错解决,成功运行。