jja*_*man 86 javascript null json undefined
我正在创建一个将结果作为JSON返回的API.当值为null时,是否应该在结果中包含键,是否存在当前的最佳实践?例如:
{
"title":"Foo Bar",
"author":"Joe Blow",
"isbn":null
}
Run Code Online (Sandbox Code Playgroud)
要么
{
"title":"Foo Bar",
"author":"Joe Blow"
}
Run Code Online (Sandbox Code Playgroud)
由于第二个较小,我倾向于这种风格,但我不确定是否有一个首选的风格.从客户的角度来看,似乎两种风格在功能上都是等同的.各有利弊吗?
rus*_*don 77
我总是明确地包括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 )
Run Code Online (Sandbox Code Playgroud)
Nie*_*sol 31
第二个将节省一小部分带宽,但如果这是一个问题,你也可以使用索引数组,而不是用键填充JSON.显然,["Foo Bar","Joe Blow"]比你现在的要短得多.
在可用性方面,我认为它没有任何区别.在这两种情况下,if(json.isbn)都会跳到else.通常无需区分null(无值)和undefined(无给定值).
Bra*_*rad 21
在JavaScript中,null意味着非常不同的东西undefined.
您的JSON输出应反映应用程序在使用JSON数据的特定上下文中使用和需要的内容.
Pau*_*aul 11
如果有任何需要区分的话,你肯定应该包括它null,undefined因为它们在Javascript中有两个不同的含义.你可以认为null财产是未知的或无意义的,并且undefined意味着财产不存在.
另一方面,如果没有人需要做出这种区分,那就继续吧.