Gson教程六(译):空值的映射

来源:互联网 发布:seo赚钱方式 编辑:程序博客网 时间:2024/06/03 04:50

该文章翻译自Gson Tutorial Series系列教程。该篇主要阐述了如何使用Gson映射空值。

值为空时将会发生什么?

我们假设你已经阅读了我们关于Gson的首篇博客,里面介绍了UserSimple类以及它的成员变量。在我们之前的例子中,所有的值都设置了。如果某个值为空将会发生什么?例如,我们创建了一个user,他拥有邮件,年龄而且是一名开发者,但是名字为空。

UserSimple userObject = new UserSimple(null, "norman@futurestud.io", 26, true);  

这行Java代码是有效的,它的结果是一个常规的UserSimple对象。如果我们现在使用Gson创建它的JSON,它看起来会怎么样呢?

UserSimple userObject = new UserSimple(null, "norman@futurestud.io", 26, true);Gson gson = new Gson();  String userJson = gson.toJson(userObject); // userJson = ??  

Gson将会创建如下JSON:

{  "age": 26,  "email": "norman@futurestud.io",  "isDeveloper": true}

Gson在序列化的时候会简单的忽视空值!如果一个值没有设置,那么它就不会存在JSON结果中。如果你需要使该空值依然出现在你的JSON中(以null代替),Gson有提供方法。但我们最好在后面探讨这一点。

现在最重要的是使你明白在序列化时,Gson并没有为JSON创建空值。

反序列化时类似的。假设有如下缺少email的JSON:

{  "age": 26,  "isDeveloper": true,  "name": "Norman"}

尽管email缺失了,Gson依然会尽量映射准确。它会使所有不存在的域的Java对象都置空:
User Object
当然,将一个可为空的成员变量(如String类型)设为空是容易的,但是,如何设置一个不能置空的类型呢?例如,想象有如下JSON:

{  "email": "norman@futurestud.io",  "name": "Norman"}

age(int类型)和isDeveloper(boolean类型)并不接受空值。在这种情况下,Gson也不会出错,它会使用它们的默认值(分别为0和false):
User Object

原创粉丝点击