YAML 是比 JSON 大得多的语言。每个 JSON 文档都是有效的 YAML,但反 过来不成立,这意味着 JSON 到 YAML 转换器可以完全正确,而 YAML 到 JSON 转换器必须拒绝 YAML 中 JSON 无法表达的部分。
使用 JSON 到 YAML 转换器
选择方向和缩进宽度,然后点击转换。写入 YAML 时,映射变成每行一个 键,数组按项重复其短横线,null 变成完全没有值的键。
该工具特别防范的 bug
看起来像数字、布尔值或 YAML 指示器的纯标量在有人将文件解析回来时
会被误读为该类型。01234 邮政编码是经典案例:不加引号写入,YAML
解析器会将其读为数字 1234,前导零就永远丢失了。碰巧读作 "true"
或 "null" 的字符串也会遇到同样的问题。
转换
{"zip":"01234","active":"true","note":null,"id":12345678901234567890}
产生:
zip: '01234'
active: 'true'
note: null
id: 12345678901234567890
两个字符串值特意加引号,因为不加引号会在返回时改变其类型。实际的
null 不加引号写入,因为那是正确的无引号拼写。二十位的 id
完整保留,因为它通过令牌流而非 JSON.parse 解析的值。
读取器接受什么,拒绝什么
将 YAML 读回 JSON 时,该工具理解映射、序列、加引号的字符串、 块标量、流集合和折叠纯标量。它按名称拒绝锚点、别名和标签,而不是 静默忽略它们,因为 YAML 没有在 JSON 中别名化值的等价物,假装 有会产生看起来才正确的文档。
往返转换
将上面的示例从 YAML 转换回会返回完全相同的原始文档:"01234" 和
"true" 作为字符串,null 作为 null,以及完整的二十位整数。这个
往返是转换器的引号规则是否正确的真正测试,因为错误的规则通常
只有在你转回并比较时才会显现。