java - GSON列表列表

标签 java json gson

如何使用 Gson 反序列化列表列表?

例如,给定以下 JSON 字符串:

{
  vars: [
    [ 1, 2, 3 ],
    [ 4, 5 ]
  ]
}

我可以创建以下两个 POJO,尝试反序列化它:

class ThisDoesNotWork {
  public List<List<Integer>> vars;
}

运行 gson.fromJson(jsonStr, ThisDoesNotWork.class); 会抛出一个 com.google.gson.JsonSyntaxException

但是下面的工作(虽然不是很好用):

class ThisWorks {
  public List<Object> vars;
}

如果我将调试器附加到 gson.fromJson(jsonStr, ThisWorks.class); 的输出,我可以看到反序列化的 vars 对象包含:

vars = {java.util.ArrayList}, size = 2
|-- [0] = {java.util.ArrayList}, size = 3
     |-- [0] = {java.lang.Integer}, value = 1
     |-- [1] = {java.lang.Integer}, value = 2
     |-- [2] = {java.lang.Integer}, value = 3
|-- [1] = {java.util.ArrayList}, size = 2
     |-- [0] = {java.lang.Integer}, value = 4
     |-- [1] = {java.lang.Integer}, value = 5

所以我的问题是,如何使用 Gson 正确反序列化列表列表?

最佳答案

这是我的一个简单错误。

class ThisDoesWorkAfterAll {
  public List<List<Integer>> vars;
}

反序列化 json 的正确方法。在我的数据中,我只是多了一层列表。如果您遇到同样的问题,请检查 GSON 是否告诉您它需要“您的类型”(例如整数),但看到的是 START_ARRAY ([)。

...尴尬...

关于java - GSON列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22350015/

相关文章:

java - 如何让java使用毫米而不是像素?

java - Lucene:查询的命中率是多少?

java - 使用 twitter4j 搜索 100 多个查询

将 HttpServletRequest 转换为 JSON 时出现 java.lang.StackOverflowError

java - Java 中的 Runtime.exec() 挂起,因为它正在等待来自 System.in 的输入

java - 在 Eclipse 中更改注释的颜色

javascript - 动态修改 DOM 并添加到文档

javascript - 按类别对 JSON 内容进行排序

android - 如何将json firestore时间戳序列化为日期?

java - Gson JsonArray pretty-print