如何将java中的复杂映射序列化为JSON

时间:2014-11-25 21:02:21

标签: java json gson

在将地图(或列表)的地图序列化为JSON时,我遇到了问题。它可以达到任何级别。我正在使用GSON将地图转换为JSON,但我没有得到所需的输出。请考虑以下示例:

Map<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", new ArrayList<String>(){{add("value2");add("value3");}});

当我序列化这张地图时,我得到以下输出:

{
"key1" : "value1",
"key2" : "[value2, value3]"
}

当我在地图中有地图时会变得更糟。我想要的输出是:

{
    "key1" : "value1",
    "key2" : ["value2", "value3"]
}

知道如何获得这样的输出吗?我已经尝试过ObjectMapper和GsonBuilder.registerTypeAdapter但到目前为止还没有成功。

提前致谢。

1 个答案:

答案 0 :(得分:2)

我认为将ArrayList存储在需要String的HashMap中是有效的。我会说那段代码应该失败,但我想它一定是成功的,因为它并没有让你失败,所以我假设发生的事情就是当你把它插入HashMap Java实际上是在幕后调用toString()将其强制转换为String。所以坐在HashMap中的值实际上不是一个数组;从插入的那一刻起它就是一个字符串。因此,您将丢失无法在损失下游挽救的信息。