Ignorer Null Fields med Jackson

1. Oversikt

Denne raske opplæringen skal dekke hvordan du konfigurerer Jackson å ignorere nullfelt når de serielliseres en java-klasse.

Hvis du vil grave dypere og lære andre kule ting, kan du gjøre med Jackson 2 - gå videre til hovedveiledningen for Jackson.

2. Ignorer nullfelt på klassen

Jackson tillater å kontrollere denne oppførselen på klassens nivå:

@JsonInclude (Include.NON_NULL) offentlig klasse MyDto {...}

Eller - mer detaljert - på feltnivå:

offentlig klasse MyDto {@JsonInclude (Include.NON_NULL) private String stringValue; privat intValue; // standard getters og setters}

Nå skal vi kunne teste det null verdier er faktisk ikke en del av den endelige JSON-utgangen:

@Test offentlig ugyldighet givenNullsIgnoredOnClass_whenWritingObjectWithNullField_thenIgnored () kaster JsonProcessingException {ObjectMapper mapper = new ObjectMapper (); MyDto dtoObject = ny MyDto (); Streng dtoAsString = mapper.writeValueAsString (dtoObject); assertThat (dtoAsString, containString ("intValue")); assertThat (dtoAsString, ikke (inneholderString ("stringValue"))); }

3. Ignorer nullfelt globalt

Jackson tillater også konfigurere denne oppførselen globalt på ObjectMapper:

mapper.setSerializationInclusion (Inkluder.NON_NULL);

Nå noen null felt i en hvilken som helst klasse seriell gjennom denne kartleggeren kommer til å bli ignorert:

@Test offentlig ugyldighet givenNullsIgnoredGlobally_whenWritingObjectWithNullField_thenIgnored () kaster JsonProcessingException {ObjectMapper mapper = new ObjectMapper (); mapper.setSerializationInclusion (Inkluder.NON_NULL); MyDto dtoObject = ny MyDto (); Streng dtoAsString = mapper.writeValueAsString (dtoObject); assertThat (dtoAsString, containString ("intValue")); assertThat (dtoAsString, containString ("booleanValue")); assertThat (dtoAsString, ikke (inneholderString ("stringValue"))); }

4. Konklusjon

Ignorer null felt er en så vanlig Jackson-konfigurasjon fordi det ofte er slik at vi trenger å ha bedre kontroll over JSON-utgangen. Denne artikkelen viser hvordan du gjør det for klasser. Det er imidlertid mer avanserte brukstilfeller, for eksempel å ignorere nullverdier når du serialiserer et kart.

Implementeringen av alle disse eksemplene og kodebiter finner du i Github-prosjektet mitt.


$config[zx-auto] not found$config[zx-overlay] not found