Gson ignorant les entrées de carte avec valeur = 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}

Comment puis-je l'obtenir pour inclure toutes les entrées?

m2o
la source

Réponses:

299

Consultez le Guide de l'utilisateur Gson - Prise en charge des objets Null :

Le comportement par défaut qui est implémenté dans Gson est que les champs d'objet Null sont ignorés. Cela permet un format de sortie plus compact; cependant, le client doit définir une valeur par défaut pour ces champs car le format JSON est reconverti dans sa forme Java.

Voici comment vous configureriez une instance Gson pour afficher null:

Gson gson = new GsonBuilder().serializeNulls().create();
Alois Cochard
la source
10
Le manuel devrait être plus optimisé pour la recherche. Je ne vais pas tout lire quand j'utilise un petit nombre de prouesses. C'était le premier résultat sur google. Correction de mon problème.
Mathijs Segers
1
@MathijsSegers Certaines des bibliothèques fantastiques sont sans documentation. Avoir tellement de mal à parcourir leur code source (qui est encore une fois avec beaucoup de modèles de constructeur et tout).
pinkpanther
13
@MathijsSegers Et c'est la beauté de SO et de Google. Je peux google "gson ignore null" et trouver cette réponse en 3 secondes au lieu d'avoir à trouver le manuel et une réponse dedans.
joshden
2
Comment inclure un seul champ NULL et non tous les champs NULL dans la classe? Y a-t-il une annotation que je peux ajouter au-dessus du champ requis?
Salam El-Banna
cette solution semble raisonnable et je m'attendais à ce qu'elle fonctionne! mais ce n'est pas le cas! des idées?
Arman Ramezanzadeh