使用方法
- 把 JSON 粘贴到“JSON 文本”中。
- 选择需要的“缩进方式”。YAML 文件通常用两个空格。
- 阅读“有效性”。如果它指出了行和列,请先在那里修改 JSON。
- 复制“YAML 文本”,或下载为 data.yaml。
JSON 如何变为 YAML
YAML 1.2 规范力求使 YAML 成为 JSON 的严格超集,因此 JSON 文本本身就是有效的 YAML 数据。转换保持数据不变,只改变书写方式:对象变为形如 name: value 的行,数组变为每项前带短横线的列表,嵌套以缩进而非括号表示。
- 字符串、数字、true、false 和 null 保持其值。若 YAML 会把某个字符串读作其他类型,例如 "true" 或 "123",则将其写在引号中,使它保持为字符串。
- 日期如2026-11-10保持为普通文本,因为 YAML 1.2 不把它读作日期。yes 和 on 也保持为文本,因为 YAML 1.2 只把 true 和 false 读作布尔值。
数字、名称与多行文本
整数保留全部数位:12345678901234567890按输入的原样写出。小数则写作最接近的 JavaScript 数字,因此1.50变为1.5,值不变。有效数字超过约15位的小数,末尾几位可能改变。
名称保持它们在 JSON 中的顺序,包括2024这类名称;JavaScript 对象会把它们移到最前面。含有换行的字符串写成块,因此每一行仍然各占一行。
示例:默认的 JSON
默认 JSON 是一个含五个名称的对象:name、free、tags、version 和 license。tags 下的列表变为 YAML 列表,每项前有短横线和两个空格。
使用两个空格缩进,结果为表中的八行,读回后数据相同。
| 行 | 写出的 YAML |
|---|---|
| 1 | name: FireToolLand |
| 2 | free: true |
| 3 | tags: |
| 4 | - json |
| 5 | - csv |
| 6 | - yaml |
| 7 | version: 2.1 |
| 8 | license: null |
常见问题
YAML 与 JSON 相同吗?
并不完全相同。但 YAML 1.2 规范力求使 YAML 成为 JSON 的严格超集,因此数据在转换中得以保留。YAML 用缩进代替括号,人读起来更容易。
为什么 YAML 中有些字符串带引号?
若 YAML 会把某个字符串读作其他类型,例如 "true"、"123" 或 "null",就把它写在引号中,使它保持为字符串。其他字符串则直接写出,不加引号。
数字会被改动吗?
整数保留全部数位,因此12345678901234567890保持不变。小数写作最接近的数字,因此1.50变为1.5,值相同。
为什么要用两个或四个空格缩进?
YAML 用空格而非制表符表示嵌套。两个空格使文件更短,四个空格则更宽。两者读回后的数据相同,因此请选择您的项目所用的风格。
同一对象中重复出现的名称为什么会被拒绝?
YAML 映射中每个名称只保存一个值,第二个值会在没有任何提示的情况下丢失。工具要求您删除重复的名称,而不是猜测保留哪一个值。
我的 JSON 会被上传到什么地方吗?
不会。转换由 yaml 程序库在您的浏览器中完成,您粘贴的内容不会发送到我们的服务器。
资料来源
- YAML Ain't Markup Language (YAML) revision 1.2.2(英文)
- RFC 8259:The JavaScript Object Notation (JSON) Data Interchange Format(英文)
- yaml:本工具使用的 JavaScript YAML 程序库(英文)
数据和文字最近核对于2026年11月10日星期二。