JSON转换泛型对象 泛型字段转换异常问题ClassCastExceptio

2022-07-22 18:09:19

alibaba.fastjson :

JSON对象转换Bean对象,对象内泛型字段类型转换异常问题。

错误示例:

public class Object<T> {
    private List<T> data;}

JSONObject json;Object<A> obj= JSONObject.toJavaObject(json,Object.class);List<A> list = obj.getData();A a = list.get(0);  //list.get(0) 当前为JSONArray类型//报错:java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to Object

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


正确方式

JSONObject json;//JSON字符串转换泛型对象Object<A> obj= JSON.parseObject(JSONObject.toJSONString(json),new TypeReference<Object<A>>(){});List<A> list = obj.getData();A a = list.get(0);

其他JSON包操作方式差不多,jackson 、Gson , 先转成Json字符串,再根据对应包下的type去处理泛型。



作者:Kamiya_
链接:https://www.jianshu.com/p/7f481b218414


提示:

javaBean 转x'm'l的时候,泛型的类也会出现转换异常。所以对象和字符串互相转换时,要明确对象类型。

image.png