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 2022-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;
}
}
https://gitee.com/cbeann/Demooo/tree/master/java-demoo/src/main/java/json2objerror