Abaikan Null Fields dengan Jackson

1. Ikhtisar

Tutorial singkat ini akan membahas bagaimana mengatur Jackson untuk mengabaikan field null saat membuat serial kelas java.

Jika Anda ingin menggali lebih dalam dan mempelajari hal-hal keren lainnya yang dapat Anda lakukan dengan Jackson 2 - lanjutkan ke tutorial utama Jackson.

2. Abaikan Field Null di Kelas

Jackson memungkinkan pengendalian perilaku ini di tingkat kelas:

@JsonInclude(Include.NON_NULL) public class MyDto { ... }

Atau - lebih terperinci - di tingkat lapangan:

public class MyDto { @JsonInclude(Include.NON_NULL) private String stringValue; private int intValue; // standard getters and setters }

Sekarang, kita harus dapat menguji bahwa nilai null memang bukan bagian dari keluaran JSON akhir:

@Test public void givenNullsIgnoredOnClass_whenWritingObjectWithNullField_thenIgnored() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); MyDto dtoObject = new MyDto(); String dtoAsString = mapper.writeValueAsString(dtoObject); assertThat(dtoAsString, containsString("intValue")); assertThat(dtoAsString, not(containsString("stringValue"))); }

3. Abaikan Bidang Null Secara Global

Jackson juga mengizinkan konfigurasi perilaku ini secara global di ObjectMapper :

mapper.setSerializationInclusion(Include.NON_NULL);

Sekarang setiap bidang nol di kelas apa pun yang diserialkan melalui mapper ini akan diabaikan:

@Test public void givenNullsIgnoredGlobally_whenWritingObjectWithNullField_thenIgnored() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(Include.NON_NULL); MyDto dtoObject = new MyDto(); String dtoAsString = mapper.writeValueAsString(dtoObject); assertThat(dtoAsString, containsString("intValue")); assertThat(dtoAsString, containsString("booleanValue")); assertThat(dtoAsString, not(containsString("stringValue"))); }

4. Kesimpulan

Mengabaikan bidang null adalah konfigurasi Jackson yang umum karena sering kali kita perlu memiliki kontrol yang lebih baik atas keluaran JSON. Artikel ini menunjukkan cara melakukannya untuk kelas. Namun ada kasus penggunaan yang lebih lanjut, seperti mengabaikan nilai null saat membuat serial Peta.

Penerapan semua contoh dan cuplikan kode ini dapat ditemukan di proyek Github saya.