当前位置: 首页 > 知识库问答 >
问题:

有没有可能用Gson.fromJson()得到ArrayList?

萧懿轩
2023-03-14

假设我有一个< code>json数组数组

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

我想将其分解为<code>ArrayList

Gson.fromJson(jsonString,ArrayList

它似乎不起作用,我通过使用

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

有更好的方法吗?


共有1个答案

司雅畅
2023-03-14

是的,请使用 TypeToken

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

TypeToken允许您指定实际需要的泛型类型,这有助于Gson在反序列化期间查找要使用的类型。

它使用以下 gem:Class#getGenericSuperClass()。。它是一个匿名类的事实使它成为TypeToken的子类。

class Anonymous extends TypeToken<...>

该方法的规范规定:

如果超类是参数化类型,则返回的 Type 对象必须准确地反映源代码中使用的实际类型参数。

如果你指定了

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

返回的<code>类型

在上面的示例中,type参数将是<code>java.lang.String数组列表的相应类型对象

 类似资料:
  • 问题内容: 假设我有一个数组数组 我想将其解析为对象。当我用 它似乎不起作用,我通过使用进行了工作 有一个更好的方法吗? 问题答案: 是的,请使用。 将允许你指定你真正想要的泛型类型,这有助于GSON找到类型来使用反序列化过程。 它使用这种宝石:。它是匿名类的事实使它成为的子类。相当于一个类 该方法的规范指出 如果超类是参数化类型,则返回的对象必须准确反映源代码中使用的实际类型参数。 如果指定 返

  • 我需要在SE环境中使用没有CDI容器的Jersey 2.28(带Jetty)。我的所有设置都在web.xml中: 以下是我使用的依赖项: 我得到的是: 我知道Jersey可以与不同的DI容器一起使用,例如Weld、HK2等,但是否可以不使用DI容器?如果是,那又是怎样做的呢?

  • 我最近读到了这篇关于为一组已知的键生成一个最小完美哈希表的文章:Throw away the Keys:Easy,Minimal Perfect Hashing。 本文似乎假设您需要一个中间表。如果我们假设键的集合很小(即<64),那么有没有其他更简单的方法来生成这样的函数。 在我的例子中,我希望将一组线程ID:s映射到数组中的唯一数据块。线程在哈希函数生成之前启动,并且在程序运行期间保持不变。线

  • 问题内容: 使用方法是否有获取功能的方法?使用实际表单元格时可以使用该方法吗? 特别是我需要一些“单元格”来跨越多列。 真实表是不可能的,因为我在 每行 布局中使用 表单 ,因此无法作为真实表进行验证。 问题答案: 不,您不能将colspan或rowpan添加到display:table-cell。这是表格单元功能的限制之一! 您可以在此参考链接中查看限制 如果要将COLSPAN功能引入表单元,则

  • 我目前正在实现视频通话应用程序,类似于使用Twilio Video的Google Hangout。我想在后台显示当时正在说话的人的视频。 有没有可能检测到谁在用Twilio Video JS SDK说话?

  • 问题内容: 得到反馈后,我运行该程序,但在控制台中没有任何输出 程序运行,但不输出。 问题答案: 是一种阻止方法。它会等到进程退出后再返回。这样做的问题是,许多程序只有在读取/清除标准输出缓冲区后才会退出,这意味着,就您而言,它可能永远不会退出。 尝试这样的事情…