I know that in most programming scenarios, the preference is for empty collections to null collections when there are 0 elements. However, most languages that consume JSON (like JavaScript) will treat empty lists/objects as true and null ones as false. For example this would be both true and an object in JavaScript:

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

但这也是事实:

{
    "items_in_stock": {}
}

And this is false:

{
    "items_in_stock": null
}

JSON是否有关于空对象/列表的约定?那么数字、布尔值和字符串呢?

推荐答案

如果预期的返回类型是数组,那么返回空数组[]是一种很好的编程实践.这确保了json的接收者可以立即将值作为数组处理,而无需首先判断null.这与使用开-闭大括号的空对象是一样的.

字符串、布尔值和整数没有"空"形式,因此可以使用空值.

Joshua Blochs的优秀著作"Efficient Java"中也提到了这一点.在那里,他描述了一些非常好的泛型编程实践(通常也适用于其他编程语言).返回空集合而不是null值就是其中之一.

以下是他书中这部分的链接:

http://jtechies.blogspot.nl/2012/07/item-43-return-empty-arrays-or.html

Json相关问答推荐

输入请求中不存在null的条件抖动

如何使用表键名称GROUP_BY

合并2个嵌套词典

PostgreSQL:删除 JSONB 数组中每个元素的特定键

如何将属性拆分为嵌套的JSON内容?

将 GEOSwift.JSON 转换为 Swift 中的 struct

如何在 Apache NiFi 中使用 JoltTransformJson 删除流文件或具有空字段的整个对象?

如何使用 jq 将字符串数组转换为对象?

如何在 wso2 中组合 2 个 json 有效负载?

N1QL 搜索对象内的某些对象

Powershell JSON 操作

缺少所需的请求正文内容:org.springframework.web.method.HandlerMethod$HandlerMethodParameter

Qt使用QJsonDocument、QJsonObject、QJsonArray解析JSON

从多维数组数据生成json字符串

验证和格式化 JSON 文件

Spring MVC控制器中的JSON参数

Jackson 没有使用 @JsonProperty 覆盖 Getter

jQuery循环.each()JSON键/值不起作用

使用适用于 Python 的 Google API - 我从哪里获取 client_secrets.json 文件?

设置对象不是 JSON 可序列化的