преобразовать в строку в JSON - PullRequest
0 голосов
/ 08 мая 2019

У меня есть карта хешей, и я добавил 2 значения в эту карту.После этого я хочу преобразовать в json, но он отображается в виде строки после преобразования json с использованием jackson.ниже мой код:

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 Ответ

1 голос
/ 08 мая 2019

Корень причины находится в типе значений и этой строки:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...