跳到主要内容

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. 长度优先的映射键排序

对于要求确定性编码但无法使用字节字典序的应用, 本规范定义了一种替代方案: 长度优先的映射键排序.