Gson忽略值为value = 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}

如何获取所有条目?

Answers:


299

请参阅Gson用户指南-空对象支持

Gson中实现的默认行为是忽略空对象字段。这允许更紧凑的输出格式。但是,当JSON格式转换回其Java形式时,客户端必须为这些字段定义默认值。

这是配置Gson实例以输出null的方法:

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

10
该手册应针对搜索进行更优化。当我使用少量功能时,我不会阅读所有内容。这是google上的第一个结果。解决了我的问题。
Mathijs Segers 2015年

1
@MathijsSegers一些出色的库没有文档。在遍历其源代码时遇到了很多麻烦(这又与许多构建器模式有关)。
pinkpanther

13
@MathijsSegers这就是SO和Google的美。我可以在Google上搜索“ gson忽略null”,然后在3秒内找到此答案,而不必在其中找到手册和答案。
2013年

2
如何只包含一个NULL字段而不是类中的所有NULL字段?我可以在必填字段上方添加注释吗?
Salam El-Banna '18

这个解决方案似乎是合理的,我确实希望它能起作用!但事实并非如此!有任何想法吗?
Arman Ramezanzadeh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.