我创建,返回结果为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 )
在JavaScript中, null
意味着什么比非常不同的undefined
。
你的JSON输出应反映使用,并在使用JSON数据的具体情况应用程序所需。
你一定要包括它,如果有任何需要区分null
和undefined
,因为这些在JavaScript中有两种不同的含义。 你可以把null
的意思属性是未知的或无意义的,并且undefined
为是指属性不存在。
在另一方面,如果没有必要对任何人作出这样的区分,然后继续前进,离开它。
我认为这是没有区别的,当你使用JSON作为背后的用户体验数据。
所不同的出现在JSON-配置文件,当用户必须手工编辑的东西。 当您使用的第一个例子,你给用户关于配置的一些提示。