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.