Джексон - Изменить имя поля
1. обзор
В этом кратком руководстве показано, как выполнитьchange the name of a field to map to another JSON property при сериализации.
Если вы хотите копнуть глубже и узнать о других интересных вещах, которые можно сделать с помощью Jackson 2, переходите кthe main Jackson tutorial.
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"}
Чтобы настроить этот вывод так, чтобы вместоstringValue мы получали, например,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.
Реализацию всех этих примеров и фрагментов кода можно найти вmy github project.