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.