我有这个代码:
Type typeOfObjectsList = new TypeToken<ArrayList<myClass>>() {}.getType();
List<myClass> objectsList = new Gson().fromJson(json, typeOfObjectsList);
它将 JSON 字符串转换为List
的物体。
但现在我想要这个ArrayList
具有动态类型(不仅仅是myClass
),在运行时定义。
The ArrayList
的项目类型将定义为反射.
我试过这个:
private <T> Type setModelAndGetCorrespondingList2(Class<T> type) {
Type typeOfObjectsListNew = new TypeToken<ArrayList<T>>() {}.getType();
return typeOfObjectsListNew;
}
但这不起作用。这是例外:
java.sql.SQLException: Fail to convert to internal representation: {....my json....}
从 Gson 2.8.0 开始,您可以使用TypeToken#getParameterized(Type rawType, Type... typeArguments) https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/reflect/TypeToken.java#L310来创建TypeToken
, then getType()
应该可以解决问题。
例如:
TypeToken.getParameterized(ArrayList.class, myClass).getType()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)