JSON → YAML 変換ツール

JSON を Kubernetes、Docker Compose、GitHub Actions、Ansible 向けの、きれいで読みやすい YAML に変換。インデント、スタイル、引用符を細かく設定できます。

ブラウザ内で動作登録不要アップロードなし

JSON 出力

JSON → YAML 変換の使い方

  1. 左の欄に JSON を貼り付けるか、.json ファイルを開きます。
  2. 入力と同時に右側に YAML が表示されます。
  3. インデント(スペース 2 個または 4 個)とスタイルを選びます:ブロック(1 行に 1 キー)か、指定したネストレベルからのフロー({a: 1}/[x, y])です。
  4. 引用符のスタイルを選び、アルファベット順にしたい場合はキーを並べ替えにチェックを入れます。
  5. YAML をコピーまたはダウンロードします。不正な JSON は行、列、考えられる原因とともに表示されます。

なぜ JSON を YAML に変換するのか?

JSON は機械や API に最適ですが、人が読んだり編集したりするには YAML の方が楽です。波括弧も必須の引用符もなく、コメントも書けます。Kubernetes、Helm、Docker Compose、GitHub Actions、GitLab CI、Ansible など、ほとんどのインフラツールは YAML で設定しますが、元になるデータ(API の出力、kubectl get -o json、Terraform の state)は JSON であることがよくあります。

ブロックスタイルとフロースタイル

ブロックスタイルは各キーとリスト要素を 1 行ずつ置く書き方で、設定ファイルでは一般的な選択です。フロースタイルは JSON のようにインラインの {} と [] を使い、短い末端の構造をコンパクトに保ちます。「レベル 2 からフロー」は上位 2 階層をブロックスタイルにし、それより深いものをインライン化します。ポートや環境変数のような小さなオブジェクトの長いリストに向いています。

安全な引用符付け

YAML パーサーが誤読する可能性のある文字列は自動的に引用符で囲みます。'no'、'on'、'1.0'、'null' のような値、先頭が * や & の文字列、: を含む文字列などです。スタイルガイドですべての文字列に引用符が必要な場合は、常にシングルか常にダブルを選んでください。

YAML 1.1 と 1.2 の落とし穴

このコンバーターは現行仕様の YAML 1.2 に従います。多くの古いツール(PyYAML、Ruby の Psych、一部のバージョンの Kubernetes や Ansible)は今も YAML 1.1 として読み込み、ルールが異なります。

  • ノルウェー問題:YAML 1.1 では country: no が false を意味するため、ノルウェーの国コード NO が消えてしまいます。yes、on、off、y、n も同様です。YAML 1.2 で真偽値として扱われるのは true と false だけです。
  • 8 進数:0755 は 1.1 では 8 進数ですが、1.2 ではただの 10 進数です(1.2 では 0o755 を使います)。安全のため、ファイルモードは引用符で囲みましょう。
  • 60 進数:1.1 では 22:30 が数値 1350 として解析されることがあります。時刻や "8080:80" のようなポートマッピングは引用符で囲みましょう。

JSON → YAML の変換では曖昧な文字列('no'、'on'、'y')を自動的に引用符で囲むため、生成される YAML はどちらのバージョンでも同じように読まれます。

よくある質問

変換で情報は失われませんか?
失われません。すべての JSON ドキュメントは有効な YAML 1.2 であり、生成した YAML を解析すると完全に同じデータに戻ります。入れ替えを押して確認できます。
引用符が付く文字列と付かない文字列があるのはなぜですか?
必要なときのみを選ぶと、引用符なしでは意味が変わってしまう値、たとえば 'yes'、'123'、特殊文字を含む文字列にだけ引用符を付けます。それ以外は読みやすさのためにそのままにします。
出力にコメントを追加できますか?
JSON にはコメントがないので変換するコメントはありませんが、コピーした後の YAML に # comments を追加できます。
キーの順序は変わりますか?
いいえ。キーを並べ替えにチェックを入れない限り、キーは JSON の順序のままです。
データのプライバシーは守られますか?
はい。コンバーターはブラウザ内で動作し、入力データを使ったネットワークリクエストは一切行いません。

関連ツール