应该JSON包含空值

我正在创build一个以JSONforms返回结果的API。 是否有一个当前的最佳做法,是否应该在值为空的结果中包含键? 例如:

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

要么

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

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

第二个将节省带宽less量,但如果这是一个问题,你也将使用索引数组,而不是用键填充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数据的特定上下文中所使用和需要的内容。

如果需要区分nullundefined ,那么你一定要包含它,因为这些在Javascript中有两个不同的含义。 您可以将null看作是意味着该属性是未知的或无意义的,并且undefined为该属性不存在。

另一方面,如果不需要任何人做出这种区分,那就继续说下去吧。

我认为使用JSON作为用户体验背后的数据并没有什么不同。

当用户需要手动编辑某些东西的时候,JSON-config文件中会出现这种差异。 当你使用第一个例子时,给用户一些关于configuration的提示。