我知道在大多数编程场景中,当有0个元素时,首选是将空集合设置为空集合。但是,大多数使用JSON的语言(如JavaScript)会将空列表/对象视为true,将null视为false。例如,这将是true和JavaScript中的对象:
{
"items_in_stock": {"widgets":10, "gadgets": 5}
}
但这也是如此:
{
"items_in_stock": {}
}
这是错误的:
{
"items_in_stock": null
}
JSON的空对象/列表是否有约定?数字,布尔值和字符串呢?
答案 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)
有一个问题,我们是否要区分案例:
“ phone”:“” =值为空
“电话”:null =尚未设置“电话”的值
如果我们想区分,我将为此使用null。否则,我们将需要添加一个新字段,例如“ isAssigned”。这是旧的数据库问题。
答案 3 :(得分:0)
空数组用于空集合,null
用于其他所有内容。
答案 4 :(得分:-1)
null只能由json对象访问,即使您可以说json仅适用于对象格式化的属性。因此,如果使用对象null值进行调用,则它将调用。
"items_in_stock": {"null":""}
我没有尝试,但是根据json的概念,我认为这是可行的:)