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?

m2o
sumber

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();
Alois Cochard
sumber
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