使用方法
- 把 YAML 粘贴到 YAML 文本 中。
- 查看 有效性。如果它指出了行和列,请在该处修改 YAML。
- 如果 YAML 含有多个文档,JSON 文本 是一个数组,每个文档对应其中一项。
- 复制 JSON 文本,或下载为 data.json。
YAML 如何被读取
YAML 1.2由其规范定义,规范说明缩进、名称、列表、带引号的文本和块如何被读取。本工具使用遵循该规范的 yaml 库读取文本,然后把结果写成 JSON。
- 映射会变成 JSON 对象,名称按书写的顺序排列。序列会变成数组。true、false 和 null 分别变为布尔值和 null,而带引号的文本仍为文本。
- 整数保留每一位数字。同一映射中重复的名称会被报告为错误,因为 JSON 只会保留其中一个值。
- .inf 或 .nan 这类值没有 JSON 形式,因此会被拒绝,而不会写成 null,也不会改变数值。
多个文档与别名
一个 YAML 文件可以含有多个文档,每个文档以一行 --- 开始。转换工具会读取所有文档。一个文档得到一个 JSON 值;多个文档得到一个 JSON 数组,每个文档一项,顺序与文件中的相同。别名(*name)会被它所指向的值替换。如果一个文件重复引用别名,使结果的体积膨胀,它会被拒绝。
计算示例:含两个文档的文件
YAML 1.2规范的示例2.7(Two Documents in a Stream)含有一个本垒打球员的列表,然后是一行 ---,再是一个球队的列表。转换后,结果是一个含两项的 JSON 数组,每个文档对应一个数组。
第一个数组含有三名球员,第二个数组含有两支球队,顺序与书写时相同。
| 文档 | JSON 项 |
|---|---|
| 1 | ["Mark McGwire", "Sammy Sosa", "Ken Griffey"] |
| 2 | ["Chicago Cubs", "St Louis Cardinals"] |
常见问题
为什么错误会显示行和列?
位置是解析器发现问题的地方,从1开始计数。实际的错误可能稍早一些,例如它所指的那一行之前一行的缩进有误。
关于多个文档的提示是什么意思?
每个以 --- 开头的行都会开始一个新文档。于是 JSON 是一个数组,每个文档一项,按顺序排列。如果您本意是一个文档,请删除多余的 --- 行。
为什么 .inf 或 .nan 会给出错误?
JSON 没有无穷大,也没有非数字,因此这样的值无法在不改变内容的情况下写出。请把它改为数字或文本,然后重新转换 YAML。
转换时数字会被改动吗?
整数保留每一位数字,因此12345678901234567890会被原样写出。小数会写成最接近的 JavaScript 数字,所以1.50变为1.5,数值相同。
JSON 会保留名称的顺序吗?
会。名称按它们在 YAML 中书写的顺序出现。JavaScript 对象会把2024这样的名称移到最前面,本转换工具则不会。
我的 YAML 会被上传到任何地方吗?
不会。转换完全在您的浏览器中进行,您粘贴的内容不会发送到我们的服务器,也不会在那里保存。
资料来源
- YAML Ain't Markup Language(英文):YAML 1.2.2修订版
- RFC 8259(英文):The JavaScript Object Notation (JSON) Data Interchange Format
- yaml(英文):本工具使用的 JavaScript YAML 库
数据和文字最近核对于2026年11月10日星期二。