属性值准则

最后更新于: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" } ~~~
';