Jackson - Alterar nome do campo

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.