Ignoriere Nullfelder mit Jackson

1. Übersicht

In diesem kurzen Tutorial erfahren Sie, wie Sie Jackson so einrichten , dass beim Serialisieren einer Java-Klasse Nullfelder ignoriert werden .

Wenn Sie tiefer graben und andere coole Dinge lernen möchten, die Sie mit dem Jackson 2 tun können, besuchen Sie das Haupt-Tutorial von Jackson.

2. Ignorieren Sie Nullfelder in der Klasse

Jackson erlaubt es, dieses Verhalten entweder auf Klassenebene zu steuern:

@JsonInclude(Include.NON_NULL) public class MyDto { ... }

Oder - genauer gesagt - auf Feldebene:

public class MyDto { @JsonInclude(Include.NON_NULL) private String stringValue; private int intValue; // standard getters and setters }

Jetzt sollten wir testen können, ob Nullwerte tatsächlich nicht Teil der endgültigen JSON-Ausgabe sind:

@Test public void givenNullsIgnoredOnClass_whenWritingObjectWithNullField_thenIgnored() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); MyDto dtoObject = new MyDto(); String dtoAsString = mapper.writeValueAsString(dtoObject); assertThat(dtoAsString, containsString("intValue")); assertThat(dtoAsString, not(containsString("stringValue"))); }

3. Ignorieren Sie Nullfelder global

Jackson ermöglicht auch die globale Konfiguration dieses Verhaltens auf dem ObjectMapper :

mapper.setSerializationInclusion(Include.NON_NULL);

Jetzt wird jedes Nullfeld in einer Klasse, die über diesen Mapper serialisiert wurde, ignoriert:

@Test public void givenNullsIgnoredGlobally_whenWritingObjectWithNullField_thenIgnored() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(Include.NON_NULL); MyDto dtoObject = new MyDto(); String dtoAsString = mapper.writeValueAsString(dtoObject); assertThat(dtoAsString, containsString("intValue")); assertThat(dtoAsString, containsString("booleanValue")); assertThat(dtoAsString, not(containsString("stringValue"))); }

4. Fazit

Das Ignorieren von Nullfeldern ist eine so häufige Jackson-Konfiguration, da häufig eine bessere Kontrolle über die JSON-Ausgabe erforderlich ist. Dieser Artikel zeigt, wie das für Klassen gemacht wird. Es gibt jedoch fortgeschrittenere Anwendungsfälle, z. B. das Ignorieren von Nullwerten beim Serialisieren einer Karte.

Die Implementierung all dieser Beispiele und Codefragmente finden Sie in meinem Github-Projekt.