关于Gson在强转时的ClassCastException

本文探讨了使用Gson库进行Java对象与JSON互转时遇到的问题,特别是当List包含多种类型对象时如何避免ClassCastException异常。通过创建通用父类并调整数据结构,解决了类型转换难题。

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

关于Gson的坑人指出:

将list转化为json

String beanListToJson = gson.toJson(list, type);

将json还原为list

List<T > objectList = gson.fromJson(resultTemp, type);

 

那么坑来了——List<T>  list的这个T不能是Object(这里不是指语法错误)

Object有什么好处呢?

假如我有三个不一样的对象Student,Teacher,Master要放到List

list.add(student);

list.add(teacher);

list.add(master);

String beanListToJson = gson.toJson(list, type);

 

当你准备把json转成list的时候:

List<T > objectList = gson.fromJson(resultTemp, type);

Student student = (Student)objectList.get(0);

Teacher teacher = (Teacher)objectList.get(1);

Master master = (Master)objectList.get(2);

Duang!Duang!Duang!ClasscastException.无法强转。

 

那应该怎么做呢?

创一个对象People

Class People{

       Private Student student;

   Private Teacher teacher;

   Priavate Master master

}

list.add(people);

String beanListToJson = gson.toJson(list, type);

List<People > objectList = gson.fromJson(resultTemp, type);

People people = objectList.get(0);

Student student = people.getStudent();

Teacher teacher = people.get Teacher ();

Master master = people.get Master ();

恭喜你,成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值