REST API响应中的null与缺少键


40

在我的应用程序中说,有些用户给我们他们的姓氏,有些则没有。在REST API响应中,首选哪个主体:

具有“空”值:

{"firstName": "Bob",
 "lastName": null}

或只是缺少的钥匙:

{"firstName": "Bob"}

Answers:


31

考虑删除空值或空值。

如果属性是可选的或具有空值或null值,请考虑从JSON删除该属性,除非存在强烈的语义上的原因。

{
  "volume": 10,

  // Even though the "balance" property's value is zero, it should be left in,
  // since "0" signifies "even balance" (the value could be "-1" for left
  // balance and "+1" for right balance.
  "balance": 0,

  // The "currentlyPlaying" property can be left out since it is null.
  // "currentlyPlaying": null
}

进一步阅读
Google样式指南-空或空属性值
是否应在REST API的JSON响应中包含空值?


感谢您的链接,Robert。因此,即使currentlyPlaying在某些响应中,而不是其他响应中,还是希望客户端检查密钥是否存在而不是检查密钥是否为null?
jtmarmon 2015年

null并且在Javascript中undefined具有几乎相同的含义,并且您可以使用if (myProperty == null)
Robert Harvey

实际上,在我的情况下,客户端可能是java,objective-c或javascript。第二个链接(API-craft)中的链接向我表明null符合我们的语义用例,但主要是我应该做出决定并坚持使用:P再次感谢
jtmarmon 2015年

简单:如果应用程序需要区分不同的值,则服务器必须提供不同的值,否则就不需要也不应提供。您的应用是否需要区分不存在的键,键具有空字符串作为值以及键具有空值?
gnasher729

3
这篇文章中答案解决了为什么不应该删除空字段的一些很好的理由。
Dave New
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.