Gson:解析generics集合

是否可以创建一个从jsson解析generics集合的方法? 我上面的aproach不起作用,因为在运行时gson在这里返回LinkedHasmaps的ArrayList,但是在编译时没有错误。

private  ArrayList readArray(String json) { Gson gson = new Gson(); Type collType = new TypeToken<ArrayList>() { }.getType(); return gson.fromJson(json, collType); } 

我已经在这里看过一些类似的问题: 使用Gson的generics类型 ,但我找不到解决方案,这确实有效。

TypeToken的东西要求你在编译时修改类型参数。 像ArrayList东西。 ArrayList不起作用。

如果您可以在运行时以某种方式获取T传递的类对象,那么您可以尝试我在如何在运行时从generics类型定义和运行时类型参数构建Java类型对象时建议的解决方案?

它看起来比大多数人想象的要简单得多:

 Type collectionType = new TypeToken>(){}.getType(); ArrayList persons = gson.fromJson(response, collectionType); 

无需将ParameterizedTypeImpl类复制为他的答案中建议的newacct。

默认情况下,在v2.1中,如果你不做任何事情,它将被反序列化为List>

您可以为该Collection类型注册TypeAdapterFactory,然后确定实际反序列化的对象类型。