java - 如何用 GSON 解析这个 JSON?

标签 java json gson

我正在努力解决使用包含列表作为值的 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"

感谢您的帮助!

最佳答案

您将从 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]}

关于java - 如何用 GSON 解析这个 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20087857/

相关文章:

java - 我应该在 win 10 64 位电脑上安装哪个 java sdk 和 android sdk 版本?

java - 如何使用带 `java`的with `kotlin-compiler.jar`命令编译Kotlin源代码?

java - AsyncHttpClient 可以执行非阻塞、异步 HTTP 调用吗?

java - JSONException 字符串无法转换为 JSONArray

android - 反序列化Gson中的有序列表

android - 使用 Retrofit v2.0.0-beta1 转换为 JSONObject/JSONArray

java - 转换以数字作为 header 的 Json 对象

java - 使用 Quartz 立即执行一次性任务

javascript - 在加载更多按钮功能中包含 json 数据

json - hive中的字符串转换