YAML・JSON相互変換

YAMLをJSONへ、JSONをYAMLへ変換します。ネスト・フロー形式・ブロックスカラー・アンカー・複数ドキュメントに対応し、構文エラーは行と列で示します。

YAMLを貼り付けると自動で変換します。

補足

  • YAML 1.2 の core schema で型を決めます。yes / no / on / off は真偽値ではなく文字列です(YAML 1.1 とは異なります)。真偽値にしたい場合は true / false と書いてください。
  • 0123 のような先頭が 0 の数字は数値 123 として読みます。郵便番号などは引用符で囲んでください。
  • 対応: ブロックのマッピング・リスト、フロー形式 {a: 1} [1, 2]、引用符とエスケープ、| と >(+ / - 付き)、コメント、アンカー & とエイリアス *、マージキー <<、複数ドキュメント(---)。
  • 非対応: タグ(!!str など)、複雑なキー(? )、%TAG。見つけた場合は行番号付きのエラーにします。
  • 複数ドキュメントは、ドキュメントごとの値を並べた JSON の配列にします。.inf / .nan は JSON で表せないため null になります。
  • JSON → YAML では、true や 123、: を含む文字列、- や # で始まる文字列など、別の意味に読まれるものだけを引用符で囲みます。YAML 1.1 で真偽値や数値に化ける yes なども囲みます。
  • コメントは変換結果に残りません。数字だけのキーは、JavaScript の仕様により出力の先頭へ並び替わることがあります。

よくある質問

yes / no / on / off は true / false に変換されますか?

変換されず、文字列のまま残ります。YAML 1.2 の core schema に従い、真偽値として読むのは true / false(True / TRUE なども含む)だけです。YAML 1.1 を前提にしたツールとは結果が変わるため、該当する値があれば注意書きを表示します。JSON → YAML では、YAML 1.1 のパーサでも誤読されないよう yes や on などの文字列を引用符で囲みます。

YAMLのどこが間違っているか分かりますか?

分かります。インデントのずれ、タブによる字下げ、閉じていない引用符や括弧、重複したキーなどを、行と列を添えたエラーで示します。

アンカー(&)やエイリアス(*)、複数ドキュメント(---)は使えますか?

使えます。エイリアスはアンカーの値に展開し、マージキー(<<: *base)も扱います。--- で区切った複数のドキュメントは、ドキュメントごとの値を並べた JSON の配列にします。

タグ(!!str など)や複雑なキー(? )は使えますか?

使えません。解釈できない書き方を黙って別の意味に読まないよう、見つけた時点で行番号付きのエラーにします。%TAG ディレクティブも同じく非対応です。

コメントや数値の書き方は保持されますか?

保持されません。いったん値として読み込んでから書き出すため、コメントは消え、0x1F や 1e3 のような数値は JSON の 10 進表記になります。先頭が 0 の数字(0123)は数値 123 として読むため、0 を残したい値は引用符で囲んでください。

↑↓ 移動 / Enter 開く / Esc 閉じる