0

我必须将 Map<String, Map<String, String>> 转换为 Codehaus-Jettison JSONObject。

我知道使用 Gson 和其他库有更简单的方法来实现这一点,但在这种情况下需要使用 Jettison。

我从文档中了解到我可以这样做:

Map<String, Map<String, String>> tagsMap = new HashMap<>();
Map<String, String> tags = new HashMap<>();
tags.put("tag1", "value1");
tags.put("tag2", "value2");
tags.put("tag3", "value3");

tagsMap.put("table1", tags);
tagsMap.put("table2", tags);
tagsMap.put("table3", tags);

JSONObject jsonObject = new JSONObject(tagsMap);

System.out.println(jsonObject.toString());

new JSONObject(map)唯一似乎适用于 Map<String, String> 并且对于上面的代码,我最终得到了这个不正确的输出:

{"table3":"{tag1=value1, tag2=value2, tag3=value3}","table2":"{tag1=value1, tag2=value2, tag3=value3}","table1":"{tag1=value1, tag2=value2, tag3=value3}"}

我想要的输出应该是正确的 JSON 内容,如下所示:

{"table3":{"tag1":"value1", "tag2":"value2", "tag3":"value3"},"table2":{"tag1":"value1", "tag2":"value2", "tag3":"value3"},"table1":{"tag1":"value1", "tag2":"value2", "tag3":"value3"}}

有没有办法用Jettison 来做这件事?

4

1 回答 1

1

似乎您使用的是旧版本的 jettison,它在 jettison 1.3 版及更高版本上运行良好。升级库版本,它将正常工作。

于 2020-09-17T08:34:27.317 回答