异常com.google.gson.internal.StringMap cannot cast to..原因&解决方案

原创 2015年11月18日 10:51:00

异常信息

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);
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Retrofit 泛型解析遇到com.google.gson.internal.LinkedTreeMap cannot be cast to object

在Retrofit网络请求数据,使用泛型解析json时,出现了com.google.gson.internal.LinkedTreeMap cannot be cast to com.xylife.c...
  • jdsjlzx
  • jdsjlzx
  • 2016年06月05日 23:55
  • 14330

com.google.gson.internal.StringMap cannot be cast XXX(整理)

android项目使用Gson时报错: com.google.gson.internal.StringMap cannot be cast

取出json解析出来的对象列表的元素时报错java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be

遇到这个问题的时候,debug显示在我要取出list里面的对象的时候报错。表面看上去代码没什么错误。比如:List. 其实这个问题是出现在解析出来的时候,java检查类型的时候不知道里面的类型是什么...

com.google.gson.internal.LinkedTreeMap cannot be cast to test.UserBean at t..

Gson泛型解析Json报错:com.google.gson.internal.LinkedTreeMap cannot be cast to test.UserBean

Gson的使用以及com.google.gson.JsonSyntaxException的解决方法

一、Gson的使用: 1.实体类 package com.zsl.test; /** * 实体类 * @author zsl * @version 2015年1月3日 19:10:1...

com.google.gson.internal.StringMap cannot be cast to

混淆配置里加入下面代码-keepattributes Signature -keep class sun.misc.Unsafe { *; } -keep class com.google.gson....

异常com.google.gson.internal.StringMap cannot be cast to XXX解决方案

02-15 07:20:06.485: E/AndroidRuntime(1766): java.lang.ClassCastException: com.google.gson.internal.S...

Gson解析报错 java.lang.ClassCastException: com.google.gson.internal.StringMap cannot be cast to XXX

将 public static List getList(String jsonString, Class cls) { List list = new ArrayList...
  • Hender_
  • Hender_
  • 2016年05月17日 15:27
  • 1770

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to

在做android解析服务器传来的json时遇到的错误。 服务器传来的数据格式 [{"title":"qq","aipPath":"/jeesite/userfiles/bda5e6b04dee47d...

com.google.gson.internal.LinkedTreeMap cannot be cast to xxx

问题描述Gson泛型解析时Json报错:com.google.gson.internal.LinkedTreeMap cannot be cast to xxx先看下返回的Json数据格式{ ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:异常com.google.gson.internal.StringMap cannot cast to..原因&解决方案
举报原因:
原因补充:

(最多只允许输入30个字)