如何使用GSON解析这个JSON?

3

我正在努力解决一个使用GSON解析包含列表值的JSON的问题。这应该很简单,但我无法想出如何解决它。JSON是:

{
  "key1": [
    "foo1",
    "foo2",
    "foo3"
  ],
  "key2": [
    "foo4",
    "foo5",
    "foo6"
  ],
  "key3": [
    "foo7",
    "foo8",
    "foo9"
   ]
}

我认为最好的方法是将它放入一个Map<String, List<String>>中,但是我无法为它创建一个Type。例如:
Type jsonArrayType = new TypeToken<Map<String, List<String>>>(){}.getType();
// Doesn't work, causes exception: "com.google.gson.internal.LinkedTreeMap cannot be cast to java.util.List"

感谢您的任何帮助!
1个回答

5

您可以从getType()方法中获取一个java.lang.reflect.Type。使用它来解析您的json。这是一个小的工作示例(Java 7)

String json = "{\"key1\": [\"foo1\",\"foo2\",\"foo3\"],\"key2\": [\"foo4\",\"foo5\",\"foo6\"],\"key3\": [\"foo7\",\"foo8\",\"foo9\"]}";
java.lang.reflect.Type type = new TypeToken<Map<String, List<String>>>(){}.getType();
Map<String, List<String>> map = new Gson().fromJson(json, type);
System.out.println(map);

这段代码会输出下面的值

{key1=[foo1, foo2, foo3], key2=[foo4, foo5, foo6], key3=[foo7, foo8, foo9]}


(注意:本文中的 HTML 标签已经被保留,不要删除)

1
我不应该一直熬到早上7点..我的代码出现了一些错误,导致了上述异常。此外,我还需要先将我的JSON字符串解析为JsonElement。但你是对的。你的代码可以运行,并且它向我展示了我的错误之处。非常感谢你 :-) - Crayl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接