跳到主内容
UniKit

JSON 转 YAML

把 JSON 转成 YAML:可选缩进、折行宽度、键排序与强制引号,@、{、} 等特殊字符自动加引号,非法 JSON 给出精确到行列的报错与结构统计。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

JSON 输入
80

YAML

name: UniKit
version: 1.0.0
tags:
  - tool
  - frontend
author:
  name: UniKit team
  homepage: https://example.com
  email: '@team'
private: true

YAML 里的 @、{、}、: # 等特殊字符会自动加引号。

结构统计

键数量8
对象2
数组1
标量8
嵌套深度2
JSON 行数11
YAML 行数10
字节数146

这个工具能做什么

  • 给 Kubernetes、GitHub Actions、Docker Compose、Ansible 这些只吃 YAML 的配置写文件时,先按自己习惯写 JSON 再一键转成 YAML。
  • YAML 缩进容易出错,用这个工具生成规范缩进(可选 1–8 空格),并可以限制折行宽度,避免长字符串被意外换行影响可读性。
  • 转换前先做一次 JSON 校验:非法 JSON 会给出精确到行列的报错和出错那一行的片段,比 JSON.parse 的报错信息更好定位。
  • @、{、}、:、# 这类在 YAML 里有特殊含义的字符由 js-yaml 自动加引号,不用自己判断哪个值需要包引号。

示例

输入

{"name":"UniKit","version":"1.0.0","tags":["tool","frontend"]}

输出

name: UniKit
version: 1.0.0
tags:
  - tool
  - frontend

默认缩进 2 空格、折行宽度 80,重复对象默认展开(不生成 &anchor / *alias 锚点)。

常见问题

为什么 version 的 1.0.0 被加了引号?

不加引号也能安全解析,但 1.0 这种值会被读成数字、1.0.0 会被当成非法浮点。js-yaml 保守地给可能产生歧义的标量加引号,保证 YAML 再解析回来类型和原来一致。

anchor 和 alias 是什么,什么时候该关掉?

YAML 里重复出现的同一个对象可以用 &anchor 定义一次、*alias 引用,体积更小但可读性差、很多解析器也不支持。默认的「展开重复对象」会把每个对象写全,给 Kubernetes 之类工具用时更安全。

缩进可以设成 4 空格或 Tab 吗?

缩进可以在 1–8 个空格之间选,输入超范围会自动夹到边界值。YAML 规范禁止用 Tab 缩进,所以这里也不提供 Tab 选项。

折行宽度设成多少合适?

默认 80 列,超过就会在合适的位置折行,长文本在 diff 里更好读。想保持一行不断开就勾选「不限制行宽」,输出会是一行一个值。

我的 JSON 会被上传吗?

不会。解析与序列化都在浏览器本地用 JavaScript 完成,不发网络请求,断网可用。

关键词:json to yamlJSON 转 YAMLyaml转换convertkvconfig序列化

同类工具