Jackson - Alterar nome do campo
1. Visão geral
Este tutorial rápido ilustra comochange the name of a field to map to another JSON property na serialização.
Se você quiser se aprofundar e aprender outras coisas legais que pode fazer com o Jackson 2, vá parathe main Jackson tutorial.
2. Alterar o nome do campo para serialização
Trabalhando com uma entidade simples:
public class MyDto {
private String stringValue;
public MyDto() {
super();
}
public String getStringValue() {
return stringValue;
}
public void setStringValue(String stringValue) {
this.stringValue = stringValue;
}
}
A serialização resultará no seguinte JSON:
{"stringValue":"some value"}
Para personalizar essa saída de modo que, em vez destringValue obtivemos - por exemplo -strVal, precisamos simplesmente anotar o getter:
@JsonProperty("strVal")
public String getStringValue() {
return stringValue;
}
Agora, na serialização, obteremos a saída desejada:
{"strVal":"some value"}
Um teste de unidade simples deve verificar se a saída está correta:
@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. Conclusão
Organizar uma entidade para aderir a um formato JSON específico é uma tarefa comum - e este artigo mostra como fazer isso é simplesmente usando a anotação@JsonProperty.
A implementação de todos esses exemplos e trechos de código pode ser encontrada emmy github project.