Ignorer Null Fields med Jackson
1. Oversigt
Denne hurtige vejledning skal dække, hvordan man konfigurerer Jackson til at ignorere nulfelter, når han serieres en java-klasse.
Hvis du vil grave dybere og lære andre seje ting, kan du gøre med Jackson 2 - gå videre til den vigtigste Jackson-tutorial.
2. Ignorer nulfelter på klassen
Jackson tillader at kontrollere denne adfærd på enten klasseniveau:
@JsonInclude (Include.NON_NULL) offentlig klasse MyDto {...}
Eller - mere detaljeret - på feltniveau:
offentlig klasse MyDto {@JsonInclude (Include.NON_NULL) privat String stringValue; privat int-værdi; // standard getters og setter}
Nu skal vi være i stand til at teste det nul værdier er faktisk ikke en del af det endelige JSON-output:
@Test offentlig ugyldighed givenNullsIgnoredOnClass_whenWritingObjectWithNullField_thenIgnored () kaster JsonProcessingException {ObjectMapper mapper = ny ObjectMapper (); MyDto dtoObject = ny MyDto (); String dtoAsString = mapper.writeValueAsString (dtoObject); assertThat (dtoAsString, indeholderString ("intValue")); assertThat (dtoAsString, ikke (indeholderString ("stringValue"))); }
3. Ignorer nulmarker globalt
Jackson tillader det også konfigurere denne adfærd globalt på ObjectMapper:
mapper.setSerializationInclusion (Inkluder.NON_NULL);
Nu nogen nul felt i enhver klasse, der er serielt gennem denne kortlægger, ignoreres:
@Test offentlig ugyldighed givenNullsIgnoredGlobally_whenWritingObjectWithNullField_thenIgnored () kaster JsonProcessingException {ObjectMapper mapper = ny ObjectMapper (); mapper.setSerializationInclusion (Inkluder.NON_NULL); MyDto dtoObject = ny MyDto (); String dtoAsString = mapper.writeValueAsString (dtoObject); assertThat (dtoAsString, indeholderString ("intValue")); assertThat (dtoAsString, containString ("booleanValue")); assertThat (dtoAsString, ikke (indeholderString ("stringValue"))); }
4. Konklusion
Ignorerer nul felter er sådan en almindelig Jackson-konfiguration, fordi det ofte er tilfældet, at vi skal have bedre kontrol over JSON-output. Denne artikel viser, hvordan man gør det for klasser. Der er dog mere avancerede anvendelsestilfælde, såsom at ignorere nulværdier, når du serialiserer et kort.
Implementeringen af alle disse eksempler og kodestykker kan findes i mit Github-projekt.