GSON解析传入泛型T,出现类型转换异常
2017-09-18 16:40
543 查看
数据源:
1.解析的关键在于创建Bean,创建Bean的核心在于,分层创建。
本例分析:
(1)第一层这个list中有两个对象,这个对象的属性是name,age,address。
(2)第二次这个对象的属性是Long_name和short_name。
解析如下
通过pareseList 拿到每个对象,进而拿到属性的值。
==========================错误
看起来没有任何的问题,用泛型来约束,以后只需要传入Bean就行。在真正的使用的时候,出现类型转化异常。原因在于传入的泛型的擦除机制,仅仅编译的时候有效,运行时候,会去掉。传入的type需要明确的类型。
[ { "name": "小龙", "age": 22, "address": { "Long_name": "中国大陆", "short_name": "北京" } }, { "name": "小娜", "age": 21, "address": { "Long_name": "中国大陆", "short_name": "上海" } } ]
1.解析的关键在于创建Bean,创建Bean的核心在于,分层创建。
本例分析:
(1)第一层这个list中有两个对象,这个对象的属性是name,age,address。
(2)第二次这个对象的属性是Long_name和short_name。
解析如下
List<ObjectFirst> pareseList = new Gson().fromJson(str, new TypeToken<List<ObjectFirst>>() {}.getType() );
通过pareseList 拿到每个对象,进而拿到属性的值。
==========================错误
public static <T> List<T> parseJsonArrayWithGson(String data, Class<T> type) { List<T> result = new Gson().fromJson(jsonData, new TypeToken<List<T>>() {}.getType()); return result; }
看起来没有任何的问题,用泛型来约束,以后只需要传入Bean就行。在真正的使用的时候,出现类型转化异常。原因在于传入的泛型的擦除机制,仅仅编译的时候有效,运行时候,会去掉。传入的type需要明确的类型。
相关文章推荐
- gson将json转为map的时候,出现类型转换异常的解决方法
- JSONObject解析Boolean类型出现异常
- 使用HibernateTemplate对数据库查询count时出现的类型转换的异常
- 《从LRS项目重构来看“数据类型”——(第一话)DataTable转换泛型集合出现的类型冲突》
- 使用Gson解析Json数组遇到的泛型类型擦除问题解决方法
- Linq集合查询出现无法将类型为“System.Int32”的对象强制转换为类型“System.String”异常
- 对于“Sqlexception 将 varchar 转换为数据类型 numeric 时出现算术溢出异常 ”
- Gson解析json时出现Expected a string but was BEGIN_ARRAY异常,由此发现Gson和FastJson区别
- Gson 解析泛型出现ClassCastException
- Gson解析Json字符串出现异常:Expected a BEGIN_ARRAY but was STRING at line 1 column 107 $的解决方法
- android studio instant run 出现类型转换异常
- Struts2 自定义局部类型转换器 出现异常 没捕获 将进convertError
- 解决使用MyBatis只传入一个String类型的参数时出现异常
- JSP解析JSONObject类型对象出现null object异常解决方案
- 使用Gson处理解析泛型类型对象
- 使用Gson解析泛型类型
- Android JSON数据格式的解析,与简单对象、带泛型的List和Map的转换,以及GSON的使用
- 关于委托:异常{ 无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型 }
- Json转换利器Gson之实例六-注册TypeAdapter及处理Enum类型
- android下载xml解析 文件尾出现NUL 导致解析异常的解决方法