4. 序列化考虑 (Serialization Considerations)
本节讨论创建 CBOR 编码时的考虑事项.
4.1. 首选序列化
对于数据模型层面的一些值, CBOR 提供多种序列化方式. 对许多应用来说, 希望编码器始终选择特定序列化方式; 这称为 "preferred serialization". 首选序列化定义如下:
- 无符号整数的首选序列化是其值的最短可能编码.
- 负整数的首选序列化是其值的最短可能编码.
- 字节字符串的首选序列化是以确定长度进行编码.
- 文本字符串的首选序列化是以确定长度进行编码, 并对长度使用最短形式.
- 数组的首选序列化是以确定长度进行编码.
- 映射的首选序列化是以确定长度进行编码, 并且键按其确定性编码的字节字典序出现.
- false 的首选序列化为 0xf4, true 为 0xf5, null 为 0xf6.
- 浮点值的首选序列化是使用能够保留该值的最短形式.
4.2. 确定性编码的 CBOR
某些协议可能要求所有发送方将其数据转换为单一的确定性编码. 本节将 "deterministically encoded CBOR" 定义为遵循首选序列化规则的 CBOR 编码.
4.2.1. 核心确定性编码要求
如果某个 CBOR 编码遵循第 4.1 节定义的首选序列化, 则它满足 "core deterministic encoding requirements".
4.2.2. 其他确定性编码考虑
确定性编码并不限于首选序列化规则. 应用可以为确定性编码定义额外要求.
4.2.3. 长度优先的映射键排序
对于要求确定性编码但无法使用字节字典序的应用, 本规范定义了一种替代方案: 长度优先的映射键排序.