我在将 map (或列表)序列化为 JSON 时遇到问题。它可以达到任何级别。我正在使用 GSON 将 map 转换为 JSON,但没有得到所需的输出。考虑下面的例子:
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", new ArrayList<String>(){{add("value2");add("value3");}});
当我序列化此 map 时,我得到以下输出:
{
"key1" : "value1",
"key2" : "[value2, value3]"
}
当我在 map 中放置 map 时,情况会变得更糟。我想要的输出是:
{
"key1" : "value1",
"key2" : ["value2", "value3"]
}
知道如何获得这样的输出吗?我已经尝试过 ObjectMapper 和 GsonBuilder.registerTypeAdapter 但到目前为止还没有成功。
提前致谢。
最佳答案
我认为将 ArrayList 存储在需要字符串的 HashMap 中是无效的。我会说该代码应该失败,但我想它一定会成功,因为它对你来说不会失败,所以我假设正在发生的是,当你将它插入到 HashMap 中时,Java 实际上正在调用 toString( ) 在幕后将其转换为 String。因此,HashMap 中的值实际上并不是一个数组;而是一个数组。从插入的那一刻起,它就是一根绳子。因此,您将丢失无法在下游挽救的信息。
关于java - 如何将 java 中的复杂映射序列化为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27136604/