将 YAML 转为 JSON(并避免缩进错误)
自 YAML 1.2 起,任何 JSON 文档都是合法的 YAML。将 YAML 配置转为 JSON,并留意缩进与类型推断陷阱。
YAML 与 JSON 是相关的
YAML 1.2 是 JSON 的严格超集,因此任何 JSON 文档本身就是合法的 YAML。把 YAML 转换为 JSON,主要是把基于缩进的结构改写成花括号和方括号。
缩进规则
YAML 不允许用 tab 缩进 —— 必须用空格,并让同级键保持相同的深度。意外的 tab 或缩进错位是最常见的 YAML 解析错误。
挪威问题
未加引号的 NO、yes、on、off 在某些解析器中会被读成布尔值,于是国家代码 NO 就变成了 false。给这些值加引号,强制它们保持字符串。
安全地转换
先校验 YAML,再转换。给有歧义的标量加引号,并确认数字、日期、前导零的值仍然是你期望的类型。
多文档 YAML 流
一个 YAML 文件可以用 '---' 分隔多个文档。JSON 没有对应概念 —— 单独转换每一个文档,如果下游工具需要一次拿到全部,就把它们包成一个 JSON 数组。Kubernetes manifest 是最常见的场景。
Anchor 与 alias
YAML 的 & anchor 与 * alias 允许通过引用复用节点,但 JSON 没有别名机制。安全的转换器会把每个 alias 解析为锚定值的一份拷贝,这会让文档膨胀。请注意,再转回 YAML 会丢失原本的共享关系。
YAML 转换时会丢失的信息
注释、!!binary 这样的标签注解、自定义 tag、block 与 flow 风格的区别以及键序,在 YAML 转 JSON 时都会被丢弃。对纯数据交换来说没问题;但对人工编辑的配置文件,应把 YAML 当作真正的源文件。
JSON 修复指 南
主题中心
- JSON Parse Errors: Read the Message, Jump to the Fix
- Fix Invalid JSON: From 'What's Wrong' to a Clean File
- JSON Formatter, Validator, Viewer: Pick the Right Tool
- Repair LLM JSON Output: Handling Almost-JSON from AI
- Privacy: JSON Tools That Don't Leave Your Browser
- JSON Interop: YAML, CSV, XML, JWT, Schema
具体指南
- 如何解码 Base64 字符串(以及 JWT Payload)
- URL 编码:百分号编码查询参数与路径
- 将 JSON 转为 CSV:把对象数组扁平化
- 将 JSON 转为 XML:根元素、属性与数组
- 将 JSON 转义为字符串字面量(并解码双重编码的 JSON)
- 修复 JSON 中的尾随逗号
- 修复 JSON 中的单引号
- 修复 JSON 中未加引号的键
- 修复 LLM 输出的 JSON
- 修复 JSON 解析错误:Expected Property Name
- JSON 与 JavaScript 对象字面量的区别
- 在发起 API 请求前校验 JSON
- JSON 格式化器 vs JSON 修复工具
- 修复 JSON Unexpected Token 错误
- JSON 转 JavaScript 对象转换器