本地处理
DEVDESK / GUIDES

YAML 转 JSON 后类型变了吗?检查引号、注释与大整数

配置文件能转换成功,不等于应用收到的数据类型符合约定。以版本号、开关和端口列表为例,先明确每个字段的类型,再比较转换后的实际值。

打开工具:YAML 与 JSON 转换

1. 从一份小配置开始

选择 YAML → JSON 并转换下面的文本。version 应保持字符串 "1.0",enabled 为布尔值,ports 为数字数组。先验证这些明确的断言,再处理完整配置。

service: api
version: "1.0"
enabled: true
ports:
  - 8080
  - 8081

2. 给需要保持文本的值加引号

版本号、邮政编码和标识符通常不用于数值运算。按实际配置契约给它们加引号,可以明确表达字符串。试着去掉 version 的引号,再比较 JSON 输出中的类型和值。

空值、空字符串和不存在的字段也不同。分别试验 null、"" 和删除字段,不要因为页面看起来都是空白就认为它们等价。

3. 缩进决定结构,注释不进入 JSON

YAML 用缩进表达层级,使用空格并保持一致。将 ports 下的一项缩进改错,观察错误位置,再恢复。输出能解析时也要确认数组没有变成错误的嵌套对象。

JSON 没有注释语法,转换不会保留 YAML 注释、引号风格或锚点写法。请把原始配置作为可编辑来源,转换产物用于消费端需要的数据格式。

4. 大整数不能通过重新排版修复

本站转换器会拒绝超出 JavaScript 安全整数范围的整数。例如未加引号的 9007199254740993 不应悄悄变成另一个值。若它是标识符,可根据接口约定改成字符串。

只想检查 JSON 数字原文时,使用 JSON 格式化工具。若上游已经把数字舍入,再转换或加引号无法恢复原始数字。

orderId: "9007199254740993"

5. 按字段验证往返转换

将 JSON 输出转换回 YAML,再比较字段、类型和数组顺序。文本对比可以揭示变化,但引号风格或缩进变化不一定是数据变化。最后在应用的配置校验器中检查一次。

  • 检查布尔值、空值、数字与字符串的区别。
  • 复杂键、自定义标签或依赖锚点的配置应单独验证兼容性。

继续动手验证