属性值准则
最后更新于:2022-04-01 06:07:11
## 属性值格式
**属性值必须是Unicode 的 booleans(布尔), 数字(numbers), 字符串(strings), 对象(objects), 数组(arrays), 或 null.**
JSON.org上的标准准确的说明了哪些类型的数据可以作为属性值。这包含Unicode的布尔(booleans), 数字(numbers), 字符串(strings), 对象(objects), 数组(arrays), 或 null。JavaScript表达式是不被接受的。APIs应该支持该准则,并为某个特定的属性选择最合适的数据类型(比如,用numbers代表numbers等)。
好的例子:
~~~
{
"canPigsFly": null, // null
"areWeThereYet": false, // boolean
"answerToLife": 42, // number
"name": "Bart", // string
"moreData": {}, // object
"things": [] // array
}
~~~
不好的例子:
~~~
{
"aVariableName": aVariableName, // Bad - JavaScript 标识符
"functionFoo": function() { return 1; } // Bad - JavaScript 函数
}
~~~
## 空或Null 属性值
**考虑移除空或null值**
如果一个属性是可选的或者包含空值或_null_值,考虑从JSON中去掉该属性,除非它的存在有很强的语义原因。
~~~
{
"volume": 10,
// 即使 "balance" 属性值是零, 它也应当被保留,
// 因为 "0" 表示 "均衡"
// "-1" 表示左倾斜和"+1" 表示右倾斜
"balance": 0,
// "currentlyPlaying" 是null的时候可被移除
// "currentlyPlaying": null
}
~~~
## 枚举值
**枚举值应当以字符串的形式呈现**
随着APIs的发展,枚举值可能被添加,移除或者改变。将枚举值当作字符串可以使下游用户幽雅的处理枚举值的变更。
Java代码:
~~~
public enum Color {
WHITE,
BLACK,
RED,
YELLOW,
BLUE
}
~~~
JSON对象:
~~~
{
"color": "WHITE"
}
~~~