在JSON中显示空参数

时间:2013-05-16 19:44:32

标签: json

我正在构建我的第一个以JSON输出的API,并且想知道:如果其中一个参数为空,是否最好仍然包含具有空值的参数名称,或者根本不包括它?例如,如果某个产品有电池,通常会输出

"batteries": [
            {
                "device": "Vehicle",
                "number": "4",
                "type": "AA",
                "included": "Not Included"
            },
            {
                "device": "Remote",
                "number": "2",
                "type": "AAA",
                "included": "Not Included"
            }
        ],

如果没有远程电池,我应该不包括第二部分吗?如果根本没有电池怎么办?我应该拆下整个电池节点吗?

2 个答案:

答案 0 :(得分:3)

从json解释器的角度来看,这无关紧要。你应该发送JSON,但是你希望消费者重建你的对象...... 您是否希望消费者拥有一个“远程”对象,表明没有电池?

您的示例对我来说看起来不像一个空节点,它看起来像有意义的数据!

对于实际上空的节点,可能只需要保持序列化对象尽可能小(无论出于何种原因)或者除了JSON之外还需要其他 稍后查看序列化对象。

在我的来自API 的个人观点中,我希望看到填充所有有意义的节点,因为它让我了解了API的可能性......“哦,我明白了,所以其中一些有遥控器并包含电池,这个API 可以告诉我!“

答案 1 :(得分:0)

在Javascript中,您可以像处理属性设置为null的方式一样处理缺席属性:

> a_unset = {}
> a_null = {a: null}
> a_null.a == a_unset.a
true
> a_null.a ? 1 : 0
0
> a_unset.a ? 1 : 0
0

因此,在JSON中,它基于Javascript并且最常用于Javascript代码,因此通常会省略空值。

但这不是一个严格的规则。 JSON确实提供了null值,因此如果您认为您的客户端代码或目标用户需要知道属性存在但未设置,则null可能是一个不错的选择。否则只需省略它,就可以节省空间。