第 11 课

生成:从程序值到 JSON 文本

序列化、键顺序,以及如何为测试与 API 保持稳定输出。

生成(序列化)把内存中的值写成 JSON 文本——用于 HTTP 响应、文件导出或测试夹具。它是解析的逆过程,同样需要做设计选择。

默认行为因语言而异

多数序列化器会:

  • 忽略 undefined 属性(JavaScript)或要求显式处理 null
  • 自动转义字符串
  • 以十进制写出数字

概念上可能得到:

{"status": "ok", "count": 3}

键顺序与稳定输出

JSON 中键的 语义顺序无关,但字节顺序会影响:

  • Git diff 与快照测试
  • 对原始字节的签名
  • 基于 canonical JSON 的缓存键

团队有时在生成前按字母序排序键,使逻辑相等的对象产生相同字符串。

美化与紧凑

模式适用场景
缩进美化人工审查、文档、调试
紧凑传输体积敏感

同一数据两种形式都可合法——按 受众 选择,而非对错。

往返一致性

理想路径:值 → 文本 → 解析 → 相等值。浮点数、超大整数或自定义类型(日期、BigInt)若未约定表示法,可能无法完美往返。应在 API 规范中写明(如 ISO 日期字符串、字符串表示的 decimal)。

想动手练习时,可使用 DevCove 相关工具——可选,不属于本课正文。

打开相关工具

返回课程概览