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

该文章翻译自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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值