Skip to main content

4. Serialization Considerations (序列化考虑)

本节讨论创建 CBOR 编码的考虑事项.

4.1. Preferred Serialization (首选序列化)

对于数据模型级别的某些值, CBOR 提供多种序列化方式. 对于许多应用程序, 希望编码器始终选择特定的序列化方式; 这被称为 "首选序列化" (Preferred Serialization). 首选序列化定义如下:

  • 无符号整数的首选序列化是其值的最短可能编码.
  • 负整数的首选序列化是其值的最短可能编码.
  • 字节串的首选序列化是使用定长编码.
  • 文本串的首选序列化是使用定长编码, 并对长度使用最短形式.
  • 数组的首选序列化是使用定长编码.
  • 映射的首选序列化是使用定长编码, 并且键按其确定性编码的字节序字典顺序出现.
  • false 的首选序列化是 0xf4, true 是 0xf5, null 是 0xf6.
  • 浮点值的首选序列化是使用保留该值的最短形式.

4.2. Deterministically Encoded CBOR (确定性编码的 CBOR)

某些协议可能要求所有发送者将其数据转换为单一的确定性编码. 本节将 "确定性编码的 CBOR" (Deterministically Encoded CBOR) 定义为遵循首选序列化规则的 CBOR 编码.

4.2.1. Core Deterministic Encoding Requirements (核心确定性编码要求)

如果 CBOR 编码遵循第 4.1 节中定义的首选序列化, 则满足 "核心确定性编码要求" (Core Deterministic Encoding Requirements).

4.2.2. Additional Deterministic Encoding Considerations (附加确定性编码考虑)

确定性编码不限于首选序列化规则. 应用程序可以为确定性编码定义附加要求.

4.2.3. Length-First Map Key Ordering (长度优先映射键排序)

对于需要确定性编码但不能使用字节序字典排序的应用程序, 本规范定义了一种替代方案: 长度优先映射键排序 (Length-First Map Key Ordering).