具有动态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中文网其他相关文章!