有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javagson列表

如何使用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正确地反序列化列表列表


共 (1) 个答案

  1. # 1 楼答案

    这是我的一个简单错误

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

    这是反序列化json的正确方法。在我的数据中,我只是增加了一个级别的列表。如果遇到相同的问题,请检查GSON是否告诉您它需要“您的类型”(例如Integer),但看到了START_数组([)

    。。。尴尬的