Gson 忽略值 = null 的地图条目

Posted

技术标签:

【中文标题】Gson 忽略值 = null 的地图条目【英文标题】:Gson ignoring map entries with value=null 【发布时间】:2011-04-24 20:06:19 【问题描述】:
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

如何让它包含所有条目?

【问题讨论】:

【参考方案1】:

见Gson User Guide - Null Object Support:

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

以下是配置 Gson 实例以输出 null 的方式:

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

【讨论】:

手册应该更加优化搜索。当我使用少量专长时,我不会阅读所有内容。这是谷歌上的第一个结果。修复了我的问题。 @MathijsSegers 一些很棒的库没有文档。在浏览他们的源代码时遇到了很多麻烦(这又是很多构建器模式等等)。 @MathijsSegers 这就是 SO 和 Google 的魅力所在。我可以谷歌“gson ignore null”并在 3 秒内找到这个答案,而不必在其中找到手册和答案。 如何在类中只包含一个 NULL 字段而不是所有 NULL 字段?我可以在必填字段上方添加注释吗? 这个解决方案看起来很合理,我确实希望它可以工作!但事实并非如此!有什么想法吗?

以上是关于Gson 忽略值 = null 的地图条目的主要内容,如果未能解决你的问题,请参考以下文章

访问地图中的最后一个条目

SQLAlchemy 将值插入到反射表中会导致所有的 NULL 条目

Flutter/Dart:如何访问地图/对象中的单个条目

缓存条目反序列化失败,条目被忽略

MySQL - 忽略插入错误:重复条目

将 Google 地图标记绑定到非地图侧边栏条目