是的,请使用 TypeToken
。
ArrayList<ArrayList<String>> list = gson.fromJson(jsonString, new TypeToken<ArrayList<ArrayList<String>>>() {}.getType());
允许您指定实际需要的泛型类型,这有助于 Gson 找到要在反序列化期间使用的类型。TypeToken
它使用以下 gem:Class#getGenericSuperClass()。
。它是一个匿名类的事实使它成为 的子类。它相当于一个类,如TypeToken<...>
class Anonymous extends TypeToken<...>
该方法的规范指出
如果超类是参数化类型,则返回的对象必须准确地反映源代码中使用的实际类型参数。Type
如果指定
new TypeToken<String>(){}.getType();
返回的对象实际上是一个,您可以在其中使用 ParameterizedType#getActualTypeArguments()
检索实际的类型参数。Type
ParameterizedType
在上面的示例中,类型参数将是 的对象。在您的示例中,它将是 的相应对象。Gson将继续沿着链条向下移动,直到它构建了所需的类型的完整地图。Type
java.lang.String
Type
ArrayList<ArrayList<String>>