异常com.google.gson.internal.StringMap cannot cast to..原因&解决方案
2015-11-18 10:51
447 查看
异常信息
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);
相关文章推荐
- Gson.toJson()时内存溢出StackOverflowError
- XML 与 JSON 优劣对比
- VBA将excel数据表生成JSON文件
- newtonsoft.json解析天气数据出错解决方法
- vbs 解析json jsonp的方法
- Extjs4如何处理后台json数据中日期和时间
- C#实现将类的内容写成JSON格式字符串的方法
- JQuery ajax返回JSON时的处理方式 (三种方式)
- jquery JSON的解析方式示例介绍
- c#版json数据解析示例分享
- ASP JSON类文件的使用方法
- C++中4种类型转换方式 cast操作详解
- C#实现对Json字符串处理实例
- C#实现Json转Unicode的方法
- php解析json数据实例
- PHP中JSON的应用技巧
- PHP6 先修班 JSON实例代码
- 关于JSON以及JSON在PHP中的应用技巧
- .Net中的json操作类用法分析
- C#操作 JSON方法汇总