我正在努力解决使用包含列表作为值的GSON解析JSON的问题.这应该很简单,但我无法弄清楚如何解决它.JSON是:
{
"key1": [
"foo1",
"foo2",
"foo3"
],
"key2": [
"foo4",
"foo5",
"foo6"
],
"key3": [
"foo7",
"foo8",
"foo9"
]
}
Run Code Online (Sandbox Code Playgroud)
我认为最好的方法是把它放进去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"
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
您java.lang.reflect.Type将从该getType()方法中获得一个.用它来解析你的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);
Run Code Online (Sandbox Code Playgroud)
此代码段打印以下值
{key1 = [foo1,foo2,foo3],key2 = [foo4,foo5,foo6],key3 = [foo7,foo8,foo9]}