JSON是否应该包含空值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我正在创建一个将结果作为JSON返回的API。当值为null时,是否应该在结果中包含键?是否有最佳做法?例如:

{
    "title":"Foo Bar",
    "author":"Joe Blow",
    "isbn":null
}

要么

{
    "title":"Foo Bar",
    "author":"Joe Blow"
}

由于第二个更小,我倾向于这种样式,但我不确定是否有首选样式。从客户角度来看,这两种款式在功能上都是相同的。任何对每个人的利弊?

提问于
用户回答回答于

第二个会节省少量的带宽,但如果这是一个问题,你还可以使用索引数组,而不是用键填充JSON。显然,["Foo Bar","Joe Blow"]它比现在短得多。

在可用性方面,我认为这没什么区别。在这两种情况下,if(json.isbn)都会跳到else。通常不需要区分null(无值)和undefined(没有给定值)。

用户回答回答于

我是一个总是包含null的粉丝,因为它具有意义。虽然遗漏财产不明确。

只要你的协议与服务器是一致的,上述任何一项都可以工作,但是如果你从服务器传递空值,我相信这会让你的API在以后变得更加灵活。

还应该提及的是,javascript的hasOwnProperty函数提供了进一步的见解。

/* if true object DOES contain the property with *some* value */
if( objectFromJSON.hasOwnProperty( "propertyName" ) )

/* if true object DOES contain the property and it has been set to null */
if( jsonObject.propertyName === null )

/* if true object either DOES NOT contain the property
   OR
   object DOES contain the property and it has been set to undefined */
if( jsonObject.propertyName === undefined )

扫码关注云+社区