YAML 转换
YAML ⇄ JSON · YAML → Properties · 支持多文档、锚点与行列报错
.inf / .nan 因为 JSON 没有这两个值会变成 null。如果你要的是"把 YAML 存回去还跟原来一模一样",本页做不到,任何转换工具都做不到。
输入
粘贴 YAML选项切换方向后选项会跟着变
YAML 的锚点与别名在解析阶段就展开成真实值,所以这里没有「保留引用」开关——JSON 里也没有引用这个概念。为什么没有 noRefs 开关:js-yaml 的 noRefs 只对「含共享引用的 JS 对象」生效,而本页输入是文本(YAML 锚点已被展开、JSON 没有引用语义),开关不会产生任何可观察差异,故不提供。
行宽只影响长字符串的换行方式:超过行宽时 js-yaml 会用折叠块(>-)折行。语义不变,但看起来会和你手写的 YAML 不一样。
嵌套对象用点连接(spring.datasource.url)。只有一份文档能转:多文档(---)没有对应的键值形式,会明确报错。空对象与空数组在 .properties 里无法表示,会被跳过并在结果里计数。
结果
类型边界:YAML 会把这些写成什么
本页按 YAML 1.2 的 core schema 解析(js-yaml 4.x 默认行为)。下面每一条都是本页实测结果,不是"按印象写的":
| YAML 写法 | 解析成 | 转成 JSON |
|---|---|---|
| true / false / True / TRUE | 布尔 | true / false |
| yes / no / on / off / YES | 字符串 | "yes" 等——YAML 1.2 里这些不是布尔(1.1 才是) |
| 007 | 数字 7 | 7(不是八进制;八进制要写 0o17) |
| 0x1F | 数字 31 | 31 |
| 1e3 | 数字 1000 | 1000 |
| 00123 这类要保留前导零的编号 | 数字 123 | 123——要保号请写成 "00123"(带引号) |
| 2024-01-02 / 2024-01-02 03:04:05 | 时间戳(Date) | "2024-01-02T00:00:00.000Z"(ISO 字符串) |
| ~ / null / 空值 | null | null |
| .inf / -.inf / .nan | ±Infinity / NaN | null——JSON 没有这两个值,信息会丢 |
| 123456789012345678901234567890 | 双精度近似值 | 1.2345678901234568e+29——长 ID 请写成字符串 |
| "007"(带引号) | 字符串 "007" | "007" |
| 块标量 | | 保留换行的字符串 | 带 \n 的字符串 |
| 块标量 > | 换行折叠成空格 | 单行字符串 |
常见问题
都会消失或展开。YAML 的注释是给人看的,JSON 里没有注释这个概念,所以转换后注释一定丢失(这也是「用 YAML 写配置、用 JSON 传数据」要分开的原因之一);锚点与别名(&x / *x)在解析阶段就被展开成真实值,转换后每个引用点都是独立副本——数据等价,但体积会变大,原来的复用关系不再保留。多文档(--- 分隔)会按顺序转成一个 JSON 数组,几个文档就是几个元素。
因为本页用的是 YAML 1.2 的 core schema(js-yaml 4.x 的默认行为):只有 true / false(以及 True / False / TRUE / FALSE)才是布尔值,yes / no / on / off 这些 YAML 1.1 时代的写法在这里就是普通字符串。同理,007 会解析成数字 7(不是八进制)、0x1F 解析成 31、日期 2024-01-02 会被识别成时间戳并在 JSON 里变成 ISO 字符串;.inf / .nan 是合法 YAML 数字,但 JSON 没有这两个值,转换后只能变成 null——这几种情况本页都在上方「类型边界」表里逐条写明。
用扁平的键路径:嵌套对象用点连接(spring.datasource.url 这样),数组默认用方括号下标(list[0]、list[1];数组里是对象就继续用点,如 users[0].name),也可以切换成点下标(list.0)。值里有反斜杠、换行、制表符或行首空格会按 java.util.Properties 的规则转义;中文默认原样保留(Java 8 以后按 UTF-8 读取没问题),需要给老工具用时可以勾选「中文转 \uXXXX 转义」。空对象与空数组在 .properties 里没有表示方法,会被跳过并在结果里计数说明。
不会上传。解析、转换、生成全部在你的浏览器里完成,配置内容不出本机、刷新即清空,页面不发起任何网络请求(js-yaml 也是本站自托管的文件,不走 CDN)。Properties 转 YAML(反向)本页不做:「键路径变回嵌套结构」需要猜哪些点是层级、哪些点是键名的一部分(a.b.c 到底是 a 下面的 b 下面的 c,还是一个就叫 a.b.c 的键),猜错会静默改变你的配置语义。这一步请手工整理或用 Spring Boot 这类框架自己绑定。