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 のコアスキーマ(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 のようなフレームワークのバインディングにお任せください。