对象。当我使用 Gson.f-6ren">
gpt4 book ai didi

java - 是否可以使用 Gson.fromJson() 来获取 ArrayList>?

转载 作者:IT老高 更新时间:2023-10-28 21:05:06 24 4
gpt4 key购买 nike

假设我有一个 json数组数组

String jsonString = [["John","25"],["Peter","37"]];

我想将其解析为 ArrayList<ArrayList<String>>对象。当我使用

Gson.fromJson(jsonString,ArrayList<ArrayList<String>>.class)

它似乎不起作用,我通过使用解决了问题

Gson.fromJson(jsonString,String[][].class)

有没有更好的方法来做到这一点?

最佳答案

是的,使用 TypeToken .

ArrayList<ArrayList<String>> list = gson.fromJson(jsonString, new TypeToken<ArrayList<ArrayList<String>>>() {}.getType());

TypeToken允许你指定你真正想要的泛型类型,这有助于 Gson 在反序列化过程中找到要使用的类型。

它使用这个 gem : Class#getGenericSuperClass() .它是一个匿名类这一事实使它成为 TypeToken<...> 的子类。 .相当于一个类

class Anonymous extends TypeToken<...>

该方法的规范指出

If the superclass is a parameterized type, the Type object returned must accurately reflect the actual type parameters used in the source code.

如果你指定了

new TypeToken<String>(){}.getType();

Type返回的对象实际上是 ParameterizedType您可以在其上使用 ParameterizedType#getActualTypeArguments() 检索实际类型参数.

类型参数将是 Type java.lang.String 的对象在上面的例子中。在您的示例中,它将是相应的 Type ArrayList<ArrayList<String>> 的对象. Gson 将继续沿着链条向下走,直到它构建了所需类型的完整映射。

关于java - 是否可以使用 Gson.fromJson() 来获取 ArrayList<ArrayList<String>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22271779/

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