应该JSON包含空值[关闭]应该JSON包含空值[关闭](Should JSON include n

2019-05-31 23:08发布

我创建,返回结果为JSON的API。 是否有我们是否应包括在结果键当值为null当前的最佳做法? 例如:

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

要么

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

由于第二是小我倾向于这种风格,但我不知道是否有一个首选的样式或没有。 从客户的角度来看,似乎是两种风格将在功能上等同。 任何优点或缺点每个?

Answer 1:

第二个将节省带宽量小,但如果这是一个问题,你也将使用代替填充键JSON索引数组。 显然, ["Foo Bar","Joe Blow"]比你现在有什么要短得多。

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



Answer 2:

我总是包括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 )


Answer 3:

在JavaScript中, null意味着什么比非常不同的undefined

你的JSON输出应反映使用,并在使用JSON数据的具体情况应用程序所需。



Answer 4:

你一定要包括它,如果有任何需要区分nullundefined ,因为这些在JavaScript中有两种不同的含义。 你可以把null的意思属性是未知的或无意义的,并且undefined为是指属性不存在。

在另一方面,如果没有必要对任何人作出这样的区分,然后继续前进,离开它。



Answer 5:

我认为这是没有区别的,当你使用JSON作为背后的用户体验数据。

所不同的出现在JSON-配置文件,当用户必须手工编辑的东西。 当您使用的第一个例子,你给用户关于配置的一些提示。



文章来源: Should JSON include null values [closed]