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.