Jackson - Changer le nom du champ

Jackson - Changer le nom du champ

1. Vue d'ensemble

Ce tutoriel rapide illustre commentchange the name of a field to map to another JSON property sur la sérialisation.

Si vous voulez creuser plus profondément et apprendre d'autres choses intéressantes que vous pouvez faire avec le Jackson 2, rendez-vous surthe main Jackson tutorial.

2. Modifier le nom du champ pour la sérialisation

Travailler avec une entité simple:

public class MyDto {
    private String stringValue;

    public MyDto() {
        super();
    }

    public String getStringValue() {
        return stringValue;
    }

    public void setStringValue(String stringValue) {
        this.stringValue = stringValue;
    }
}

En le sérialisant, vous obtiendrez le JSON suivant:

{"stringValue":"some value"}

Pour personnaliser cette sortie afin qu'au lieu destringValue, nous obtenions - par exemple -strVal, nous devons simplement annoter le getter:

@JsonProperty("strVal")
public String getStringValue() {
    return stringValue;
}

Maintenant, lors de la sérialisation, nous obtiendrons la sortie souhaitée:

{"strVal":"some value"}

Un simple test unitaire devrait vérifier que la sortie est correcte:

@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. Conclusion

Le marshaling d'une entité pour qu'elle adhère à un format JSON spécifique est une tâche courante - et cet article montre comment procéder consiste simplement à utiliser l'annotation@JsonProperty.

L'implémentation de tous ces exemples et extraits de code se trouve dansmy github project.