Negeer Null Fields met Jackson

1. Overzicht

In deze korte tutorial wordt uitgelegd hoe u het apparaat instelt Jackson om null-velden te negeren bij het serialiseren een Java-klasse.

Als je dieper wilt graven en andere coole dingen wilt leren die je met de Jackson 2 kunt doen, ga dan naar de belangrijkste Jackson-tutorial.

2. Negeer null-velden in de klasse

Jackson maakt het mogelijk om dit gedrag op klassenniveau te beheersen:

@JsonInclude (include.NON_NULL) openbare klasse MyDto {...}

Of - meer gedetailleerd - op veldniveau:

openbare klasse MyDto {@JsonInclude (include.NON_NULL) private String stringValue; privé int intValue; // standaard getters en setters}

Nu zouden we dat moeten kunnen testen nul waarden maken inderdaad geen deel uit van de uiteindelijke JSON-uitvoer:

@Test openbare leegte gegevenNullsIgnoredOnClass_whenWritingObjectWithNullField_thenIgnored () gooit JsonProcessingException {ObjectMapper mapper = new ObjectMapper (); MyDto dtoObject = nieuwe MyDto (); String dtoAsString = mapper.writeValueAsString (dtoObject); assertThat (dtoAsString, bevatString ("intValue")); assertThat (dtoAsString, not (containsString ("stringValue"))); }

3. Negeer null-velden wereldwijd

Jackson staat ook toe dit gedrag globaal configureren op het ObjectMapper:

mapper.setSerializationInclusion (Inclusief.NON_NULL);

Nu elk nul veld in elke klasse die via deze mapper is geserialiseerd, wordt genegeerd:

@Test openbare leegte gegevenNullsIgnoredGlobally_whenWritingObjectWithNullField_thenIgnored () gooit JsonProcessingException {ObjectMapper mapper = new ObjectMapper (); mapper.setSerializationInclusion (Inclusief.NON_NULL); MyDto dtoObject = nieuwe MyDto (); String dtoAsString = mapper.writeValueAsString (dtoObject); assertThat (dtoAsString, bevatString ("intValue")); assertThat (dtoAsString, bevatString ("booleanValue")); assertThat (dtoAsString, not (containsString ("stringValue"))); }

4. Conclusie

Negeren nul Fields is zo'n veelgebruikte Jackson-configuratie omdat het vaak zo is dat we betere controle over de JSON-uitvoer nodig hebben. Dit artikel laat zien hoe je dat doet voor klassen. Er zijn echter meer geavanceerde use-cases, zoals het negeren van null-waarden bij het serialiseren van een kaart.

De implementatie van al deze voorbeelden en codefragmenten is te vinden in mijn Github-project.