Gson mengabaikan entri peta dengan nilai = null


132
Gson gson = new Gson();

Map<String,Object> map = new HashMap<String, Object>();
map.put("a", 1);
map.put("b", null);

System.out.println(gson.toJson(map)); //prints {"a":1}

Bagaimana cara saya memasukkan semua entri?

Jawaban:


299

Lihat Panduan Pengguna Gson - Dukungan Objek Null :

Perilaku default yang diterapkan di Gson adalah bahwa bidang objek nol diabaikan. Ini memungkinkan format output yang lebih ringkas; Namun, klien harus menetapkan nilai default untuk bidang ini karena format JSON dikonversi kembali ke bentuk Java-nya.

Inilah cara Anda mengonfigurasi instance Gson ke output null:

Gson gson = new GsonBuilder().serializeNulls().create();

10
Manual harus lebih dioptimalkan untuk pencarian. Saya tidak akan membaca semuanya ketika saya menggunakan sejumlah kecil prestasi. Ini adalah hasil pertama di google. Memperbaiki masalah saya.
Mathijs Segers

1
@MathijsSegers Beberapa perpustakaan fantastis tidak memiliki dokumentasi. Setelah begitu banyak kesulitan melalui kode sumber mereka (yang lagi-lagi dengan banyak pola pembangun dan semua).
pinkpanther

13
@MathijsSegers Dan ini adalah keindahan SO dan Google. Saya dapat google "gson diabaikan null" dan menemukan jawaban ini dalam 3 detik daripada harus menemukan manual dan jawaban di dalamnya.
joshden

2
Bagaimana cara memasukkan hanya satu bidang NULL tidak semua bidang NULL di dalam kelas? Apakah ada Anotasi yang dapat saya tambahkan di atas bidang yang diperlukan?
Salam El-Banna

solusi ini tampaknya masuk akal dan saya memang berharap itu berfungsi! tapi ternyata tidak! ada ide?
Arman Ramezanzadeh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.