Gson数据类型转换异常 java.lang.ClassCastException: com.google.gson.internal.出现原因已经解决方案 gson泛型指定

本文介绍了在使用Gson进行JSON到List数据对象转换时遇到的`java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to User`异常。问题根源在于Gson在处理有泛型的数据类型时需要指定泛型,通过`new TypeToken<List<User>>(){}.getType()`来指定类型,或者使用非泛型的实体类包裹。这两种方法可以避免转换异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Gson数据类型转换异常 java.lang.ClassCastException: com.google.gson.internal.出现原因已经解决方案,

今天写项目发现了一个用gson做JSON串回List的数据对象时,报了这个错误,如下

        List<User> userList;
        userList=gson.fromJson((jsonStr),List.class);
        System.out.println(userList.get(0));
        System.out.println(userList.get(0).getUserName());

在这里插入图片描述
数据类型转化异常
但是userList.get(0)确实可以正常拿到相应的数据,但是第4行的,getUserName()却会报如上的异常。

经过了一番探索之后,发现是因为Gson在处理Json字符串和对象二者转换时,对于有泛型的数据类型,需要做一个泛型指定,如 List 等

//先来看一个错误的写法, 0 0 随便试的 我敢说肯定很多人也试过
        //userList=gson.fromJson(jsonStr,List<User>.class);
//正确操作
        userList=gson.fromJson(jsonStr,new TypeToken<List<User>>(){}.getType());

通过 newTypeToken<List>(){}.getType() 来指定特定泛型的数据转换,即可避免发生上面的泛型错误,而在未指定泛

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值