Gson教程九(译):强制序列化null值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gson教程九(译):强制序列化null值相关的知识,希望对你有一定的参考价值。

参考技术A

在上一篇博客中,我们已经向你展示了 GsonBuilder 的基础。 GsonBuilder 可以用于自定义Gson的行为,从而影响序列化和反序列化的方方面面。在这篇博客中,你将学会如何使用强制Gson序列化空值。

还记得之前发布的关于空值映射的博客吗?它通过很多例子向我们展示了,当值为空时Gson是如何行为的。如果你还没有阅读,你或许可以移步到那篇博客获取有价值的信息。如果你很心急,我们直接告诉你要点:当属性的值设为空时将不会被序列化。

忽略空值这一行为对于减少JSON字符串的体积来说通常是个好主意。然而,并不总是如此。有些API会强制要求该域存在或者 null 值对于某一属性来说有特定的含义(换句话说,某值的默认值不是为空;我们需要明确的设置它为空)。

Gson为改变这一默认的行为提供了选择。我们可以使用 GsonBuilder 来为序列化提供 null 值。如果你还不熟悉 GsonBuilder ,请阅读上一篇博客。

我们复用之前博客中的 UserSimple 模型。

现在,我们为其创建一个email为空的用户实例。

默认设置下, email 属性将不会在JSON结果中出现:

如果你要求 email 域作为JSON的一部分,你需要调用 GsonBuilder .serializeNulls() 方法。如果你这样做了,Gson将会序列化所有属性,即使属性设置为空:

usersJson现在包括 email 域了:

在这篇博客中你已经学会了如何强制Gson序列化值为空的属性。

在下一篇博客中,我们将向你展示如何自定义选择哪些域可以序列化和反序列化。

以上是关于Gson教程九(译):强制序列化null值的主要内容,如果未能解决你的问题,请参考以下文章

Gson用法

Gson 在反序列化对象时忽略 null

你真的会用Gson吗?Gson使用指南

Android Retrofit2:在没有 GSON 或 JSONObject 的情况下序列化 null

java 大量数据处理问题记录

Gson——如何忽略用@Expose标记的字段