在没有模型的情况下使用GSON解析JSON

时间:2014-05-25 18:32:53

标签: java json gson

假设您有一个JSON对象:

{
  "mappings": {
    "s54dsf45fzd324": "135sdq13sod1tt3",
    "21sm24dsfp2ds2": "123sd56f4gt4ju4"
  }
}

您对映射对象的唯一了解是它将字符串映射到字符串,但您不知道键值。

是否可以使用GSON解析此对象并循环键/值对?

2 个答案:

答案 0 :(得分:5)

只需尝试使用TypeToken作为类型返回Map<String, Map<String, String>>

Reader reader=new BufferedReader(new FileReader(new File("resources/json.txt")));

Type type = new TypeToken<Map<String, Map<String, String>>>() {}.getType();
Map<String, Map<String, String>> data = new Gson().fromJson(reader, type);

// pretty printing 
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(data));

输出:

{
    "mappings": {
      "s54dsf45fzd324": "135sdq13sod1tt3",
      "21sm24dsfp2ds2": "123sd56f4gt4ju4"
    }
}

答案 1 :(得分:0)

使用Java 8+且没有TypeToken:

    new Gson().fromJson(jsonString, JsonObject.class).getAsJsonObject("mappings")
    .entrySet().stream().forEach(System.out::println);