有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

将映射(或列表)序列化为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");}});

序列化此映射时,将获得以下输出:

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

当我把地图放在地图里的时候,情况会变得更糟。我想要的输出是:

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

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

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    我认为将ArrayList存储在需要字符串的HashMap中是无效的。我会说代码应该失败,但我想它一定成功了,因为它对您来说没有失败,所以我假设发生的是,当您将它插入HashMap时,Java实际上是在幕后调用它的toString(),将其转换为字符串。所以HashMap中的值实际上不是数组;从插入的那一刻起就是一根绳子。因此,您正在丢失的信息无法从丢失的信息下游恢复