首页 > Java > java教程 > 如何为具有动态项类型的 ArrayList 创建 Gson TypeToken?

如何为具有动态项类型的 ArrayList 创建 Gson TypeToken?

Susan Sarandon
发布: 2024-12-11 13:45:10
原创
1035 人浏览过

How to Create a Gson TypeToken for an ArrayList with a Dynamic Item Type?

具有动态ArrayList项类型的Gson TypeToken

在Gson中,TypeToken是一个实用程序类,可用于为未知类型创建类型信息在运行时。它通常用于将 JSON 字符串反序列化为 Java 对象。

使用列表时,可以在运行时动态定义 ArrayList 的项目类型。这可以使用反射来完成。

问题:

以下代码尝试为具有动态项目类型的列表创建 TypeToken:

private <T> Type setModelAndGetCorrespondingList2(Class<T> type) {
    Type typeOfObjectsListNew = new TypeToken<ArrayList<T>>() {}.getType();
    return typeOfObjectsListNew;
}
登录后复制

但是,由于类型不匹配,这种方法会在将 JSON 字符串转换为对象时导致 SQLException

解决方案:

从 Gson 2.8.0 开始,可以使用 TypeToken#getParameterized(Type rawType, Type... typeArguments) 来创建 TypeToken具有动态项目类型的列表。解决方案是:

Type typeOfObjectsListNew = TypeToken.getParameterized(ArrayList.class, myClass).getType();
登录后复制

这会为具有指定动态项类型 (myClass) 的 ArrayList 创建 TypeToken。然后,您可以使用 getType() 检索用于反序列化的类型信息。

以上是如何为具有动态项类型的 ArrayList 创建 Gson TypeToken?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板