JSON转换泛型对象 泛型字段转换异常问题ClassCastExceptio
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的时候,泛型的类也会出现转换异常。所以对象和字符串互相转换时,要明确对象类型。