JSON ↔ YAML 変換

JSON と YAML をブラウザで相互変換。大きな数値も正確に保ち、yes や 1.0 など誤解されやすい値は引用符で囲みます。アンカー、マージキー、複数ドキュメントにも対応。

YAML とは

YAML は波かっこの代わりにインデントで構造を表す設定ファイルの形式で、Docker Compose、Kubernetes、GitHub Actions、Spring Boot の application.yml などで使われています。YAML 1.2 は JSON を包含しているので、両者は相互に変換でき、違いは主に読みやすさです。

使い方

  1. 変換の方向を選びます:JSON → YAML または YAML → JSON。
  2. 内容を貼り付けます。自動変換がオンなら入力と同時に変換され、構文エラーは行と列で示されます。
  3. インデントを 2 または 4 スペースから選び、結果をコピーまたは保存します。「結果を入力に戻す」で逆方向に変換できます。

例

次の JSON は:

{"name":"web","replicas":3,"ports":[80,443],"env":{"DEBUG":"yes","VERSION":"1.10"}}

このように変換されます。

name: web
replicas: 3
ports:
  - 80
  - 443
env:
  DEBUG: "yes"
  VERSION: "1.10"

"yes" と "1.10" に引用符が付いている点に注目してください。付いていないと、多くの YAML ツールは yes を真偽値の true、1.10 を数値の 1.1 として読み、設定が知らないうちに変わってしまいます。

よくある質問

一部の値に引用符が付くのはなぜですか?

YAML が誤解しうる文字列には必ず引用符を付けます。yes、no、on、null などの単語、数値や日付に見える文字列、: や # を含む文字列です。有名な例がノルウェーの国コード NO で、古い YAML パーサーは false にしてしまいます。

大きな数値は正確に保たれますか?

はい、どちらの方向でも保たれます。9007199254740993 や 1280.50 のような値は元の表記のまま書き出されます。多くのオンライン変換ツールは数値を JavaScript で処理するため、大きな ID が 9007199254740992 に丸められてしまいます。

コメント、アンカー、複数ドキュメントはどうなりますか?

JSON にはコメントがないため、YAML のコメントは削除されます。アンカーとエイリアス(&base、*base)やマージキー(<<: *base)は実際の値に展開されます。--- で区切られた複数のドキュメントは JSON の配列になります。

日付はどう扱われますか?

2024-01-01 のような日付は、JSON でも元の文字列のまま残ります。別の形式やタイムゾーンに変換されることはありません。