异常com.google.gson.internal.StringMap cannot cast to..原因&解决方案
2016-03-24 14:48
495 查看
转载自:http://blog.csdn.net/tongcpp/article/details/49903809
json转bean对象时报错
异常信息
java.lang.ClassCastException: com.google.gson.internal.StringMap cannot cast to…
异常描述
期望使用一个方法将JsonArray字符串转换为对象List,方法运行结束后,结果List中的对象不能识别为传入的T对象类型,而是识别为一个Map导致后续出错。
方法如下
调用方式
异常原因
作为方法传入参数,Java编译过程会将泛型对象类型擦除。
解决方案
方案1
方案2
方法如下
调用方式
json转bean对象时报错
异常信息
java.lang.ClassCastException: com.google.gson.internal.StringMap cannot cast to…
异常描述
期望使用一个方法将JsonArray字符串转换为对象List,方法运行结束后,结果List中的对象不能识别为传入的T对象类型,而是识别为一个Map导致后续出错。
方法如下
public static <T> List<T> getListFromJSON(String str, Class<T> type) { Type listType = new TypeToken<List<T>>(){}.getType(); List<T> list = new Gson().fromJson(str, listType); return list; }
调用方式
List<Work> works = getListFromJSON(workJsonString, Work.class);
异常原因
作为方法传入参数,Java编译过程会将泛型对象类型擦除。
解决方案
方案1
直接copy方法内代码直接使用,而不通过方法传入
方案2
方法如下
public static <T> List<T> stringToArray(String s, Class<T[]> clazz) { T[] arr = new Gson().fromJson(s, clazz); return Arrays.asList(arr); }
调用方式
List<Work> works = stringToArray(workgson, Work[].class);
相关文章推荐
- 又一道简单题&&Ladygod(两道思维水题)
- Search gold(dp)
- GOOGLE VR SDK开发VR游戏,VR播放器之二
- django环境搭建
- GOOGLE VR SDK开发VR游戏
- Go语言:通过组合获得接口
- GOOGLE VR SDK开发VR游戏,VR播放器之一
- 【杭电oj】3635 - Dragon Balls(带权并查集,好题)
- GCM(谷歌云推送)客户端服务器端开发全指南(服务器篇)
- 记录一些常用git命令,省得老google
- 【深度学习经典论文翻译2】GoogLeNet-Going Deeper with Convolutions全文翻译
- 安卓智能语音机器人--AlphaGo?你也可以
- django foreign key 自动加_id问题
- PC与串口通信
- 分类(类别,category),类扩展
- How much common sense have YOU got? Take the test
- sth about kmp
- lightoj 1057 - Collecting Gold 状压DP求解TSP
- Unable to execute dex: Multiple dex files define Lcom/google/zxing/BarcodeFormat;编译问题
- Mongo 增加用户名密码