欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-16 09:09:40
...

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

值为空时将会发生什么?

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

UserSimple userObject = new UserSimple(null, "[email protected]", 26, true);  

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

UserSimple userObject = new UserSimple(null, "[email protected]", 26, true);

Gson gson = new Gson();  
String userJson = gson.toJson(userObject); // userJson = ??  

Gson将会创建如下JSON:

{
  "age": 26,
  "email": "[email protected]",
  "isDeveloper": true
}

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

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

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

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

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

{
  "email": "[email protected]",
  "name": "Norman"
}

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

相关标签: gson java android