在将地图(或列表)的地图序列化为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但到目前为止还没有成功。
提前致谢。
答案 0 :(得分:2)
我认为将ArrayList存储在需要String的HashMap中是有效的。我会说那段代码应该失败,但我想它一定是成功的,因为它并没有让你失败,所以我假设发生的事情就是当你把它插入HashMap Java实际上是在幕后调用toString()将其强制转换为String。所以坐在HashMap中的值实际上不是一个数组;从插入的那一刻起它就是一个字符串。因此,您将丢失无法在损失下游挽救的信息。