在 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);
遗憾的是返回一个 StringMaps 数组,而不是类型。 T 被解释为另一种通用类型,而不是我的类型。任何解决方法?
原文由 Rodrigo Asensio 发布,翻译遵循 CC BY-SA 4.0 许可协议
Since
gson 2.8.0
, you can useTypeToken#getParametized((Type rawType, Type... typeArguments))
to create thetypeToken
, thengetType()
should do the trick.例如: