转换为json的字符串

时间:2019-05-08 10:15:51

标签: java json jackson

我有一个哈希映射,我在该映射中添加了2个值。之后,我想转换为json,但使用jackson转换json后,它显示为字符串。 下面是我的代码:

Map<String, Map<String, String>> attributes = new HashMap<String, Map<String, String>>();
Map<String, String> values = new HashMap<String, String>();
Map<String, String> metadata = new HashMap<String, String>();
metadata.put("type", test.getType().toString());
metadata.put("id", test.getId());
String metadataStr = metadata.toString();
String replaceStr = metadataStr.replace("=", ":");
values.put("metadata", replaceStr);
attributes.put("caption", values);

这里我将属性转换为json,如下所示:

String json = this.getObjectMapper().writeValueAsString(attributes);

{
  "Test": {
    "metadata": "{id:f600b8fa-77cf-4225-ba42-39135909c7ce, type:test}",
   }
}

但是我需要如下:

{
  "Test": {
    "metadata": {
               "id":"f600b8fa-77cf-4225-ba42-39135909c7ce",
                "type":"test" }
   }
}

任何人都可以帮我这个忙。 预先感谢。

1 个答案:

答案 0 :(得分:1)

原因的根源在于值的类型和以下行:

values.put("metadata", replaceStr);

需要具备:

Map<String, Map<String, Map<String, String>>> attributes = new HashMap<String, Map<String, Map<String, String>>>();
Map<String, Map<String, String>> values = new HashMap<String, Map<String, String>>();
Map<String, String> metadata = new HashMap<String, String>();
metadata.put("type", test.getType().toString());
metadata.put("id", test.getId());
values.put("metadata", metadata);
attributes.put("caption", values);