gpt4 book ai didi

Java 类型泛型作为 GSON 的参数

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:46 29 4
gpt4 key购买 nike

在GSON中获取你所做的对象列表

Gson gson = new Gson();
Type token = new TypeToken<List<MyType>>(){}.getType();
return gson.fromJson(json, token);

它工作得很好,但我想更进一步,将 MyType 参数化,这样我就可以有一个通用函数来使用此代码解析对象列表

// the common function 
public <T> List<T> fromJSonList(String json, Class<T> type) {
Gson gson = new Gson();
Type collectionType = new TypeToken<List<T>>(){}.getType();
return gson.fromJson(json, collectionType);
}

// the call
List<MyType> myTypes = parser.fromJSonList(jsonString, MyType.class);

遗憾的是返回的是 StringMap 数组,而不是类型。 T 被解释为另一种泛型类型,而不是我的类型。有什么解决办法吗?

最佳答案

gson 2.8.0开始,您可以使用TypeToken#getParametized((Type rawType, Type... typeArguments))创建 typeToken,然后 getType() 就可以了。

例如:

TypeToken.getParameterized(List.class, myType.class).getType();

关于Java 类型泛型作为 GSON 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44390648/

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