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

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去处理泛型。

--- 问题虽小 , 真恶心人

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容