Gson ไม่สนใจรายการแผนที่ที่มีค่า = 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}

ฉันจะให้มันรวมรายการทั้งหมดได้อย่างไร

คำตอบ:


299

ดูคู่มือผู้ใช้ Gson - การสนับสนุนวัตถุ Null :

พฤติกรรมเริ่มต้นที่นำมาใช้ใน Gson คือฟิลด์วัตถุ null จะถูกละเว้น สิ่งนี้ทำให้รูปแบบเอาต์พุตมีขนาดกะทัดรัดมากขึ้น อย่างไรก็ตามไคลเอ็นต์ต้องกำหนดค่าเริ่มต้นสำหรับฟิลด์เหล่านี้เนื่องจากรูปแบบ JSON จะถูกแปลงกลับเป็นรูปแบบ Java

นี่คือวิธีที่คุณจะกำหนดค่าอินสแตนซ์ Gson เพื่อส่งออกค่าว่าง:

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

10
คู่มือควรมีการปรับให้เหมาะสมยิ่งขึ้นสำหรับการค้นหา ฉันจะไม่อ่านทุกอย่างเมื่อฉันใช้ feats เล็กน้อย นี่เป็นผลลัพธ์แรกบน google แก้ไขปัญหาของฉัน
Mathijs Segers

1
@MathijsSegers ห้องสมุดยอดเยี่ยมบางส่วนไม่มีเอกสารประกอบ มีปัญหามากในการผ่านซอร์สโค้ดของพวกเขา (ซึ่งเป็นอีกครั้งที่มีรูปแบบการสร้างมากมายและทั้งหมด)
pinkpanther

13
@MathijsSegers และนี่คือความงามของ SO และ Google ฉันสามารถ google "gson ละเว้น null" และค้นหาคำตอบนี้ใน 3 วินาทีแทนที่จะต้องค้นหาคู่มือและคำตอบในนั้น
joshden

2
วิธีการรวมเขตข้อมูล NULL เดียวเท่านั้นไม่ใช่เขตข้อมูล NULL ทั้งหมดในคลาส? มีคำอธิบายประกอบที่ฉันสามารถเพิ่มเหนือฟิลด์ที่ต้องการหรือไม่
Salam El-Banna

วิธีนี้ดูสมเหตุสมผลและฉันคาดหวังว่ามันจะทำงาน! แต่มันไม่ได้! ความคิดใด ๆ
Arman Ramezanzadeh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.