使用方法
JSON转YAML转换器是「粘 JSON、点转换、拿 YAML」三步:
- 「JSON 输入」粘贴或手写的 JSON,演示值是一个含 name、version、tags 数组与 owner 嵌套对象的小例子。
- 点「转换为 YAML」或在输入框按 Ctrl/Cmd+Enter,右侧出现 YAML;非法 JSON 会在红框里指出错误原因。
- 点「复制 YAML」整段拿走,或「导出 .yaml」存成文件;想换例子点「载入示例」。
JSON转YAML转换器能解决什么
它把「机器友好的 JSON」变成「人更好读的 YAML」,适合三类场景:
- 配置文件可读化:Kubernetes、Docker Compose、CI 流水线多用 YAML,从接口导出的 JSON 配置贴进来一键变 YAML,缩进层级一目了然。
- 教学与对照:学序列化时,对比同一个对象在 JSON 与 YAML 下的写法,理解「对象/数组/标量」如何对应;演示对象的 owner 嵌套在 YAML 里就是两层缩进。
- 本地安全转换:敏感配置(密钥、内网地址)不想过第三方网站,纯本地转换避免泄露,刷新即清空。
本页不做的事:不做 YAML 转回 JSON(那是另一个方向);不展开 YAML 锚点 & 与引用 *(输入若含会按普通字符处理);不压缩或美化 JSON。它只做 JSON→YAML 这一件事。
原理和变量
① 用了哪个具体函数:解析用浏览器内置 JSON.parse,序列化是本页手写的递归函数 toYaml(value, indent):按值是对象、数组还是标量分别处理,不用任何库。
② 关键参数为什么这样取:用 2 空格缩进而非 Tab,是因为 YAML 官方推荐空格、Tab 在 YAML 里不参与缩进;数组用「- 」前缀、对象用「key: 」前缀,是 YAML 块结构的既定写法。
③ 遵循哪个标准:输出符合 YAML 1.1/1.2 的通用子集(块映射、块序列、双引号标量),可被主流解析器(PyYAML、Go yaml、js-yaml)读回;未使用锚点、多文档等高级特性以保证兼容。
④ 输入怎么变成输出:演示对象先解析成内存结构,再递归打印;tags 数组渲染成四行「- 」列表,owner 对象在 name 同级下缩进两格,version: 2 原样、stable: true 原样。
⑤ 边界与阈值:空输入会提示先粘贴;非法 JSON 抛出 SyntaxError 并显示 message;顶层可以是对象、数组甚至单个标量(字符串/数字)。极深嵌套受调用栈限制,但正常配置远不到上限。
⑥ 常见误用的正确解释:YAML 里 yes/no/on/off 可能被解析成布尔,所以本页对这类字符串强制加双引号避免歧义;数字字符串(如 "007")也会加引号,防止被读成整数 7。
完整示例(数值仅作演示)
输入演示 JSON,输出得到(格式示意):
name: 柳泉工具version: 2stable: truetags:后接四行- json/- yaml/- converterowner:下缩进两格写team: newtools与members: 5
这段输出与右侧默认转换结果一致,可和下方语法对照表对照每种类型的写法。
输入范围与对照表
JSON转YAML转换器的对照表列出常见 JSON 类型在 YAML 下的写法,帮你预判输出形态:
| JSON 类型 | YAML 写法 | 说明 |
|---|---|---|
| 字符串(普通) | name: 柳泉工具 | 无特殊字符可裸写 |
| 字符串(含冒号) | "key: value" | 含冒号空格强制加引号 |
| 数字 | version: 2 | 原样输出 |
| 布尔 | stable: true | 小写 true/false |
| null | note: null | 小写 null |
| 数组(块式) | - json 换行 - yaml | 每项一行,减号空格 |
| 对象 | 缩进 2 空格 | key: 后换行缩进 |
| 空对象 | {} | 行内空映射 |
| 空数组 | [] | 行内空序列 |
| 多行字符串 | 双引号内 \n | 换行转义,不丢内容 |
| yes/no 字符串 | "yes" 加引号 | 防被当布尔 |
| 数字字符串 | "007" 加引号 | 防被当整数 7 |
| 锚点与引用 | 不支持生成 | & 与 * 按字面值处理 |
| 多文档 | 不支持 | --- 分隔本工具不产出 |
| 时间戳 | 作为字符串 | 不自动识别为日期 |
| 折叠标量 | 用双引号 | 不用 > 块,兼容性更好 |
对照表说明:YAML 的「隐式类型」是最大坑——看起来像数字的会成数字、像 yes 的会成布尔,所以本页对有歧义的字符串一律加双引号,确保 round-trip 不改义。
结果边界和舍入
舍入与精度:数字按原值输出,不做四舍五入;浮点如 0.1 在 YAML 里仍是 0.1,不会变成 0.10000000000000001,因为直接取字符串。
什么时候会拒绝转换:输入为空会提示先粘贴;JSON 不合法(括号不配对、键没引号、尾逗号)会显示 SyntaxError 信息,逐项指出问题;修正后再点转换即可。
缩进与兼容:严格 2 空格缩进、不用 Tab;输出是 YAML 通用子集,可被 PyYAML、js-yaml、Go yaml 等标准解析器读回。
结果性质:这是无损结构化转换(类型与层级不变),只是表示法从花括号换成缩进;如需反向或再加工请用对应工具。
常见问题
转换后数字变成字符串了吗?
不会。JSON 里的数字在 YAML 里仍是数字(如 version: 2)。只有「长得像数字或布尔的字符串」(如 "007"、"yes")会被强制加引号,防止被误读成其他类型。
我的 JSON 报错了怎么办?
红框会显示浏览器的 SyntaxError 信息,通常是括号不配对、对象键没加双引号、或多了尾逗号。按提示修正后重新点「转换为 YAML」即可。
支持 YAML 转回 JSON 吗?
本工具只做 JSON→YAML 单向。需要反向请用专门的 YAML 解析工具,避免混淆方向导致格式错乱。
数据会上传到服务器吗?
不会。解析与序列化全在浏览器本地用原生 JS 完成,刷新即清空,不发起任何网络请求,敏感配置可放心处理。
缩进为什么用空格不用 Tab?
YAML 规范规定缩进只能用空格,Tab 不被当作缩进字符,混用会导致解析失败。本页统一用 2 个空格,兼容性最好。
能处理很大的 JSON 吗?
能,但受浏览器内存与渲染限制。几 MB 的配置一般没问题;超大文件建议分段或本地脚本处理,避免文本框卡顿。
数组和对象混嵌套会乱吗?
不会。递归序列化会按层级逐级缩进,数组里的对象、对象里的数组都能正确展开,演示对象的 owner 嵌套就是例子。
导出的 .yaml 能直接用吗?
能。点「导出 .yaml」得到标准 UTF-8 文本文件,可直接当作配置文件使用;注意 YAML 对缩进敏感,勿手动改用 Tab。
相关工具
- Meta标签生成器:给工具页配 SEO 元信息。
- 数字转比特转换器:另一种结构化数据换算。
- CSS单位速查表:前端单位对照。
- 正则替换工具:处理 JSON 文本时用。
- 正则速查表:正则语法对照。
- HtaccessRedirect生成器:配置类生成器对照。
- 环境变量转JSON转换器:反向把配置收进 JSON。