Jackson - Ändern Sie den Namen des Feldes
1. Überblick
Dieses kurze Tutorial zeigt, wiechange the name of a field to map to another JSON property bei der Serialisierung verwendet werden.
Wenn Sie tiefer graben und andere coole Dinge lernen möchten, die Sie mit dem Jackson 2 machen können, gehen Sie zuthe main Jackson tutorial.
2. Ändern Sie den Namen des Felds für die Serialisierung
Mit einer einfachen Entität arbeiten:
public class MyDto {
private String stringValue;
public MyDto() {
super();
}
public String getStringValue() {
return stringValue;
}
public void setStringValue(String stringValue) {
this.stringValue = stringValue;
}
}
Die Serialisierung führt zu folgendem JSON:
{"stringValue":"some value"}
Um diese Ausgabe so anzupassen, dass anstelle vonstringValue beispielsweisestrVal angezeigt wird, müssen wir den Getter einfach mit Anmerkungen versehen:
@JsonProperty("strVal")
public String getStringValue() {
return stringValue;
}
Bei der Serialisierung erhalten wir nun die gewünschte Ausgabe:
{"strVal":"some value"}
Ein einfacher Unit-Test sollte sicherstellen, dass die Ausgabe korrekt ist:
@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. Fazit
Das Marshalling einer Entität zur Einhaltung eines bestimmten JSON-Formats ist eine häufige Aufgabe. In diesem Artikel wird die Verwendung der Annotation@JsonPropertyeinfach anhand der Annotation@JsonPropertybeschrieben.
Die Implementierung all dieser Beispiele und Codefragmente finden Sie inmy github project.