Gson ignora le voci della mappa con valore = 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}

Come ottengo per includere tutte le voci?

Risposte:


299

Vedere la Guida dell'utente di Gson - Supporto per oggetti null :

Il comportamento predefinito implementato in Gson è che i campi oggetto null vengono ignorati. Ciò consente un formato di output più compatto; tuttavia, il client deve definire un valore predefinito per questi campi poiché il formato JSON viene riconvertito nel suo modulo Java.

Ecco come configurare un'istanza Gson per l'output null:

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

10
Il manuale dovrebbe essere più ottimizzato per la ricerca. Non leggerò tutto quando uso una piccola quantità di imprese. Questo è stato il primo risultato su google. Risolto il mio problema
Mathijs Segers,

1
@MathijsSegers Alcune delle fantastiche librerie sono senza documentazione. Avere così tanti problemi a passare attraverso il loro codice sorgente (che è di nuovo con molti modelli di builder e tutti).
pinkpanther,

13
@MathijsSegers E questa è la bellezza di SO e Google. Posso google "gson ignore null" e trovare questa risposta in 3 secondi invece di dover trovare il manuale e una risposta in esso.
joshden,

2
Come includere un solo campo NULL non tutti i campi NULL all'interno della classe? C'è un'annotazione che posso aggiungere sopra il campo richiesto?
Salam El-Banna,

questa soluzione sembra ragionevole e mi aspettavo che funzionasse! ma non lo fa! qualche idea?
Arman Ramezanzadeh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.