Автор оригинала: Eugen Paraschiv.
1. Обзор
В этом кратком руководстве показано, как изменить имя поля для сопоставления с другим свойством JsonProperty при сериализации.
Если вы хотите копнуть глубже и узнать другие интересные вещи, которые вы можете сделать с помощью Jackson 2 – перейдите к основному учебнику по Джексону .
2. Измените имя поля для сериализации
Работа с простым объектом:
public class MyDto { private String stringValue; public MyDto() { super(); } public String getStringValue() { return stringValue; } public void setStringValue(String stringValue) { this.stringValue = stringValue; } }
Сериализация приведет к следующему JSON:
{"stringValue":"some value"}
Чтобы настроить этот вывод таким образом, чтобы вместо Значение строки мы получаем – например – strVal , нам нужно просто аннотировать геттер:
@JsonProperty("strVal") public String getStringValue() { return stringValue; }
Теперь, при сериализации, мы получим желаемый результат:
{"strVal":"some value"}
Простой модульный тест должен проверить правильность вывода:
@Test public void givenNameOfFieldIsChanged_whenSerializing_thenCorrect() throws JsonParseException, IOException { ObjectMapper mapper = new ObjectMapper(); MyDtoFieldNameChanged dtoObject = new MyDtoFieldNameChanged(); dtoObject.setStringValue("a"); String dtoAsString = mapper.writeValueAsString(dtoObject); assertThat(dtoAsString, not(containsString("stringValue"))); assertThat(dtoAsString, containsString("strVal")); }
3. Заключение
Маршалинг сущности для соответствия определенному формату JSON является обычной задачей, и в этой статье показано, как это сделать, просто используя аннотацию @JsonProperty .
Реализацию всех этих примеров и фрагментов кода можно найти в моем проекте github .