JSON中对于空对空的约定是什么?

时间:2012-03-08 15:10:30

标签: javascript json

我知道在大多数编程场景中,当有0个元素时,首选是将空集合设置为空集合。但是,大多数使用JSON的语言(如JavaScript)会将空列表/对象视为true,将null视为false。例如,这将是true和JavaScript中的对象:

{
    "items_in_stock": {"widgets":10, "gadgets": 5}
}

但这也是如此:

{
    "items_in_stock": {}
}

这是错误的:

{
    "items_in_stock": null
}

JSON的空对象/列表是否有约定?数字,布尔值和字符串呢?

5 个答案:

答案 0 :(得分:56)

如果预期的返回类型是数组,则返回空数组是一种很好的编程习惯。这可以确保json的接收者可以立即将值视为一个数组,并且首先不必检查它是否为null。它与空对象({})的方式相同。字符串,布尔值和整数没有空的'形式,所以可以使用空值。

不要接受我的话。在约书亚布洛赫斯的优秀书籍#34; Effective Java"他描述了一些非常好的通用编程实践(通常也适用于其他编程语言)。返回空集合而不是空值是其中之一。这是他书中那部分的链接:http://jtechies.blogspot.nl/2012/07/item-43-return-empty-arrays-or.html

答案 1 :(得分:4)

“JSON有一个名为null的特殊值,可以在任何类型的数据上设置,包括数组,对象,数字和布尔类型。”

“JSON空概念适用于数组和对象......数据对象没有空列表的概念。因此,不对这些属性的数据对象采取任何操作。”

Here是我的来源。

答案 2 :(得分:2)

有一个问题,我们是否要区分案例:

  1. “ phone”:“” =值为空

  2. “电话”:null =尚未设置“电话”的值

如果我们想区分,我将为此使用null。否则,我们将需要添加一个新字段,例如“ isAssigned”。这是旧的数据库问题。

答案 3 :(得分:0)

空数组用于空集合,null用于其他所有内容。

答案 4 :(得分:-1)

null只能由json对象访问,即使您可以说json仅适用于对象格式化的属性。因此,如果使用对象null值进行调用,则它将调用。

"items_in_stock": {"null":""}

我没有尝试,但是根据json的概念,我认为这是可行的:)