52

有没有办法将包含 json 的 String 转换为 HashMap,其中每个 key 都是 json-key 而 value 是 json-key 的值?json 没有嵌套值。我正在使用 Gson 库。

例如,给定 JSON:

{
"id":3,
"location":"NewYork"
}

结果哈希图:

<"id", "3">
<"location", "NewYork">

谢谢

4

3 回答 3

116

TypeToken根据GSON FAQ使用:

Gson gson = new Gson();
Type stringStringMap = new TypeToken<Map<String, String>>(){}.getType();
Map<String,String> map = gson.fromJson(json, stringStringMap);

没有铸造。没有不必要的对象创建。

于 2013-02-18T20:12:49.933 回答
9

如果我将 TypeToken 解决方案与 Map< Enum , Object> 一起使用,我会得到“重复键:null”。

对我来说最好的解决方案是:

String json = "{\"id\":3,\"location\":\"NewYork\"}";
Gson gson = new Gson();
Map<String, Object> map = new HashMap<String, Object>();
map = (Map<String, Object>)gson.fromJson(json, map.getClass());

结果:

{id=3.0, location=NewYork}
于 2014-02-25T08:37:29.873 回答
2

我喜欢:

private static class MyMap extends HashMap<String,String> {};
...
MyMap map = gson.fromJson(json, MyMap.class);
于 2016-03-07T20:42:38.920 回答