Сериализация в JSON как имя-значение из String от Jackson ObjectMapper - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть строка, например:

String value = "123";

И когда я сериализую эту строку в json через ObjectMapper:

objectMapper.writeValueAsString(value);

Вывод:

"123"

Можно ли написать строку, используя либо имя строки, либо значение строки?Желаемый вывод:

"value" : "123"

PS: я не хочу создавать объект DTO с одним полем для сериализации одного строкового значения.

Ответы [ 4 ]

0 голосов
/ 21 февраля 2019

Если вы используете Java 8 и хотите сделать это автоматически, не создавая карты или не указав имя строковой переменной «value», это ссылка , вам нужно следовать -

0 голосов
/ 21 февраля 2019

Создайте карту:

Map<String, String> map = new HashMap();
map.put("value", value);
String parsedValue = ObjectMapper.writeValueAsString(map);

и вы получите: {"value":"123"}

0 голосов
/ 21 февраля 2019

Вы также можете использовать Джексон JsonGenerator

try (JsonGenerator generator = new JsonFactory().createGenerator(writer)) {
     generator.writeStartObject();
     generator.writeFieldName("value");
     generator.writeString("123");
     generator.writeEndObject();
  }
}
0 голосов
/ 21 февраля 2019

Если у вас есть простая строка, вы получите простую строку при сериализации.Если вы хотите обернуть его в объект, тогда используйте карту для простейшего решения.

String value = "123";
Map<String, String> obj = new HashMap<>();
obj.put("value", value);

Передача этого через маппер приведет к чему-то вроде этого:

{ "value": "123" }

Если вы изменитекарту на <String, Object> вы можете передать практически все, что захотите, даже карты в картах, и они будут правильно сериализованы.

Если вы действительно не можете иметь вмещающие фигурные скобки, вы всегда можете взять подстрокуно это было бы очень странно, если вы продолжаете сериализацию в JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...