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?

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();

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.