JSON 与 YAML 互转
边输入边在 JSON 和 YAML 之间互相转换:编辑任意一侧,另一侧随之更新。
把工具固定在这里,会保存在此浏览器中。
固定一个工具,它的贴纸就会出现在这里。
边输入边在 JSON 和 YAML 之间互相转换:编辑任意一侧,另一侧随之更新。
JSON 和 YAML 描述的是同一类数据:映射、列表、字符串、数字、布尔值和 null。YAML 1.2 在设计上把 JSON 作为自己的子集,并加入了手工编辑文件所需的功能:注释、用缩进代替括号、多行字符串、一个文件中的多个文档,以及用于复用值的锚点和别名。
从 JSON 转到 YAML 会保留所有的值,只有一个例外:同一个对象中出现两次的键只保留最后一个值,因为 YAML 映射中的键不能重复。从 YAML 转到 JSON 只保留数据:注释会消失,别名和 << 合并键会被替换为它们指向的值,!Ref 这样的自定义标签会被去掉而值保留,不是字符串的键(例如 1 或 true)会变成对应的文本。
挪威问题。在 YAML 1.1 中,不带引号的 yes、no、on 和 off 都是布尔值,所以在一份国家代码列表里,挪威的代码 no 会变成 false。YAML 1.2 只保留了 true 和 false。此工具中的解析器遵循 YAML 1.2,除非文档以 %YAML 1.1 指令开头,所以它把 no 读作字符串“no”。许多仍在使用的解析器采用 1.1 的规则,因此此工具在输出 YAML 时会给这类字符串加上引号。
版本号。不带引号的 1.10 是浮点数,作为数字它就是 1.1。版本号、邮政编码以及其他只是看起来像数字的内容,都必须加引号才能保持为文本:version: "1.10"。
你最后编辑的一侧是源,另一侧根据它重写。如果源无法解析,错误会显示在它下方,另一侧保留上一次有效的转换结果。缩进选项作用于生成的一侧;修改 JSON 缩进也会重新缩进你输入的 JSON,而你输入的 YAML 永远不会被重写,因为那样会删掉其中的注释。
键保持源中的顺序,包括由数字组成的键,而 JavaScript 对象会把这类键移到最前面。大于 2 的 53 次方的整数在两个方向上都逐位复制。用 --- 分隔多个文档的 YAML 文件会变成 JSON 数组,页面上会给出提示。在同一个 YAML 映射中使用两次的键会被报告为错误。YAML 的读取和输出由开源的 yaml 包完成,它在你的浏览器中运行。
YAML 1.2 在设计上把 JSON 作为自己的子集,YAML 1.2 解析器可以读取 JSON 文档。少见的例外是键重复的对象,YAML 不接受这种情况。你可以把 JSON 粘贴到 YAML 一侧来试试。
JSON 两者都没有。注释会被丢弃,每个别名都会被替换为其锚点所对应值的副本。再把这个 JSON 转回去,得到的 YAML 数据相同,但没有注释和锚点。
不加引号时,YAML 把 1.10 读作浮点数,而这个数就是 1.1。写成 "1.10" 才能保持为文本。010 或 1e3 这样的值也是如此。
不会。两个方向的转换都由浏览器标签页中的 JavaScript 完成,此工具不会用你输入的内容发出任何网络请求。
它会在独立窗口中打开,离线时也能使用。
要安装,请点按“分享”按钮,然后选择“添加到主屏幕”。