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.