Gson ignoriert Karteneinträge mit dem Wert = 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}

Wie kann ich alle Einträge einschließen?

Antworten:


299

Siehe Gson-Benutzerhandbuch - Null-Objekt-Unterstützung :

Das in Gson implementierte Standardverhalten ist, dass Nullobjektfelder ignoriert werden. Dies ermöglicht ein kompakteres Ausgabeformat. Der Client muss jedoch einen Standardwert für diese Felder definieren, da das JSON-Format wieder in seine Java-Form konvertiert wird.

So würden Sie eine Gson-Instanz für die Ausgabe von null konfigurieren:

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

10
Das Handbuch sollte für die Suche optimiert sein. Ich werde nicht alles lesen, wenn ich eine kleine Menge Kunststücke benutze. Dies war das erste Ergebnis bei Google. Mein Problem wurde behoben.
Mathijs Segers

1
@MathijsSegers Einige der fantastischen Bibliotheken sind ohne Dokumentation. Es gibt so viele Probleme beim Durchsuchen des Quellcodes (was wiederum viele Builder-Muster und alles enthält).
Pinkpanther

13
@MathijsSegers Und das ist das Schöne an SO und Google. Ich kann "gson ignore null" googeln und diese Antwort in 3 Sekunden finden, anstatt das Handbuch und eine Antwort darin finden zu müssen.
Joshden

2
Wie kann man nur ein NULL-Feld und nicht alle NULL-Felder in die Klasse aufnehmen? Gibt es eine Anmerkung, die ich über dem erforderlichen Feld hinzufügen kann?
Salam El-Banna

Diese Lösung scheint vernünftig und ich habe erwartet, dass es funktioniert! aber das tut es nicht! irgendwelche Ideen?
Arman Ramezanzadeh
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.