如何使用 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/