Jackson - Name des Feldes ändern

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.