这个页面的代码没跑起来。

直接从文件夹里打开 index.html,浏览器会拦下 JavaScript 模块,于是你选好一个文件之后,页面不会有任何反应。改用 http 把这个文件夹提供出去:

powershell -ExecutionPolicy Bypass -File serve.ps1

然后打开 http://localhost:8080/。

YAML 转 JSON — JSON 也能转回 YAML

两个方向都有,而且会告诉你各自的代价。这些都不会粘进别人的服务器。

语言: 简体中文
查看源码
你的 YAML 和 JSON 在浏览器里处理,无须上传处理。

转换是对一段字符串做算术,就在这里,在这个页面上。两个解析器都是手写的,都在 src/ 里——shared/parse-yaml.js 和 shared/parse-json.js——除此之外再没有别的。这个工具压根就没有网络功能,没有要取的,也没有要发的。这一点在这里比本站几乎任何地方都更要紧:一份 YAML 文件多半是部署配置,而部署配置多半塞满了主机名、桶名和密钥。

实时检查: 检查中…

离线: 检查中…

不用信我们说的。打开开发者工具,盯着“网络”面板,转换点什么。没有哪个请求带走你粘进去的一个字符。嫌麻烦就直接拔掉网线,照样转换。

1 选方向

缩进 制表符只对 JSON 提供。YAML 是按空格定义的,制表符在它里面不是合法缩进。

给每个对象的键排序 按键读起来的样子排,而不是按它们的码位,所以 item2 排在 item10 前面。

2 贴进来

空的

3 把结果带走

还没有结果。

 

以 Markdown 查看

不上传就把 YAML 转成 JSON 的步骤

  1. 选方向。YAML 转 JSON 或者 JSON 转 YAML。菜单下面那行小字会在你粘任何东西之前,而不是之后,告诉你这个方向会丢什么。
  2. 粘进来,或者把文件放上去。能选中能复制的都行。把文件放到选择框上,你自己的浏览器会读它并填进输入框——这里没有上传这一步可以省略——而 .json 或 .yaml 的后缀顺便就把方向定好了。
  3. 选缩进。两个空格、四个空格,或者一个制表符。制表符只对 JSON 提供:YAML 是按空格定义的,制表符在它里面不是合法缩进。
  4. 在出错的地方读错误。在这里失败的解析器会告诉你它遇到了什么,在第几行第几列,而不是“位置 4193 处有意外的 token”。通常这就够你修好一份配置文件,不用再打开别的东西。
  5. 把结果拿走。复制,或者下载成文件,文件名按它出来的格式取。

说得更细的版本

如何互转 YAML 与 JSON 在浏览器中将支持的 YAML 子集转为 JSON,也可将 JSON 转为 YAML。复用前检查注释丢失、未支持的结构和精确数字文本。

常见问题

我的 YAML 会被上传到什么地方吗?

不会。这个页面上的两个解析器和两个打印器,都是在你自己的浏览器里、你自己的硬件上跑的函数。这个工具压根就没有网络功能,从不取任何东西,也从不发任何东西,页面的 Content-Security-Policy 里写着它允许联系的每一个地址,没有一个属于本站。这正是拿它处理部署配置的理由:那种文件里塞满主机名、桶名,偶尔还有某人打算挪走的密钥,把它粘进别人的转换器,就是把它给了对方。

把 YAML 转成 JSON 会丢什么?

JSON 会丢失注释。本解析器有意只支持 YAML 1.2 的子集,拒绝锚点、别名和标签,而不是替你决定展开方式或类型转换。JSON 表示值的树状结构;YAML 还可表示共享节点和带类型的值。多文档流也会被拒绝,不会擅自包进数组。JSON 转 YAML 保留所表示的值。YAML 规范定义了更完整的格式。

我的 YAML 里写的是 no,JSON 出来却是字符串。为什么?

YAML 1.1 将 yes、no、on 和 off 当作布尔值,导致挪威国家代码变成 false。本工具支持的子集使用 YAML 1.2 规则:这些词保留为字符串,true 和 false 是布尔值,null 和 ~ 是 null,数字标量是数字。YAML 输出会为歧义词加引号,以兼容仍使用旧规则的读取器。

它会保持我的键顺序吗?

会,两个方向都会,而这比听上去难。建立在 JSON.parse 上的转换器会悄悄把看着像整数的键挪到前面,于是 {"10":a,"2":b} 回来就成了 {"2":b,"10":a}。数字保留你打的每一位,所以一个二十位的账号不会因为双精度浮点丢掉最后三位。如果你就是想排序,有个勾选框,而且它按键读起来的样子排,不是按码位。

能一次转换好几份 YAML 文档吗?

不能,而且它会直说,而不是替你挑一份。带 --- 分隔符的文件装着不止一份文档,而 JSON 没有哪种形状表示“好几份文档”——用数组的话,就成了这份文件从没做过的断言。一份一份转。

这里为什么没有 YAML 格式化?

因为 YAML 没有值得一写的压缩形式——短的那种是流式风格,读不了,而读不了正是把文件留成 YAML 这件事的反面。排开 JSON、XML、HTML 和 CSS 是 JSON 格式化的活儿,而且它也排 YAML。

文件最大能有多大?

这里没有设限,因为没有服务器在为此付钱。真正的上限是你自己的设备:几兆字节的 YAML 没问题,文档很长的时候,页面会等你打字停下来再转换,而不是跟你抢键盘。

免费吗?需要注册吗?

免费,没有账号,不用登录,没有试用期,也不限制你粘多少。本站有广告,站点靠它维持;广告拿不到关于你文本的任何东西。

断网还能用吗?

能。页面加载一次之后拔掉网线,它照样工作。这也是证明没有上传的最简单办法:一个把你的配置送出去转换的工具,在你拔线的那一刻就停了。