gpt4 book ai didi

java - 具有动态 ArrayList 项类型的 Gson TypeToken

转载 作者:IT老高 更新时间:2023-10-28 13:52:46 31 4
gpt4 key购买 nike

我有这个代码:

Type typeOfObjectsList = new TypeToken<ArrayList<myClass>>() {}.getType();
List<myClass> objectsList = new Gson().fromJson(json, typeOfObjectsList);

它将 JSON 字符串转换为对象的 List。但现在我想要这个 ArrayList 具有动态类型(不仅仅是 myClass),在运行时定义。

ArrayList 的项目类型将使用 reflection 定义。

我试过了:

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

但它不起作用。这是一个异常(exception):

java.sql.SQLException: Fail to convert to internal representation: {....my json....}

最佳答案

从 Gson 2.8.0 开始,您可以使用 TypeToken#getParameterized(Type rawType, Type... typeArguments)要创建 TypeToken,然后 getType() 就可以了。

例如:

TypeToken.getParameterized(ArrayList.class, myClass).getType()

关于java - 具有动态 ArrayList 项类型的 Gson TypeToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20773850/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com