异常描述及复现
FdcpRes对象里有一个List属性。首先把FdcpRes对象变为JSON字符串,然后在把JSON字符串变为FdcpRes对象,此时再获取List属性并且强转,就会报错。
报错为:java.util.LinkedHashMap cannot be cast to
解决办法
从json字符串转换为FdcpRes的对象中已经没有了泛型,所以可以把这个FdcpRes里的data字段变为字符串重新反序列化
package json2objerror;import untils.JsonUtils;import java.util.ArrayList;import java.util.List;/*** @author chaird* @create -04-17 13:11*/public class MainOk {public static void main(String[] args) {FdcpRes res = buildRes();// 创建JSON字符串String s = JsonUtils.objectToJson(res);FdcpRes fdcpRes = JsonUtils.jsonToPojo(s, FdcpRes.class);//把List对象里重新变为Json字符串,再重新把Json字符串变为List对象就Ok了s = JsonUtils.objectToJson(fdcpRes.getData());List<Ecodata> data = JsonUtils.jsonToList(s, Ecodata.class);for (Ecodata datum : data) {System.out.println(datum);}}public static FdcpRes buildRes(){// 创建两个对象List<Ecodata> ecodataList = new ArrayList<>();Ecodata e1 = new Ecodata();e1.setId(1);e1.setValue(1D);ecodataList.add(e1);Ecodata e2 = new Ecodata();e2.setId(2);e2.setValue(2D);ecodataList.add(e2);// 封装结果FdcpRes res = new FdcpRes();res.setCode(200);res.setData(ecodataList);return res;}}
源码下载
/cbeann/Demooo/tree/master/java-demoo/src/main/java/json2objerror
如果觉得《java.util.LinkedHashMap cannot be cast to》对你有帮助,请点赞、收藏,并留下你的观点哦!