YAML→JSON変換

YAML形式のデータをJSONに変換します。Kubernetesマニフェスト・docker-compose.yml・CI設定ファイルなどYAMLで書かれた構造を、jqをはじめとするJSON専用ツールで扱える形にブラウザ上ですぐ変換できます。

YAML→JSON変換とは

YAML→JSON変換は、Kubernetesのマニフェストやdocker-compose.yml、GitHub Actionsのワークフローファイルなど、人が読み書きしやすいYAML形式で書かれた設定を、プログラムが機械的に扱いやすいJSON形式へブラウザ上で変換するツールです。マッピング(`key: value`)、ブロックシーケンス(`- item`)、フローシーケンス(`[a, b, c]`)、フローマッピング(`{a: 1, b: 2}`)、文字列・整数・小数・真偽値・nullといった基本スカラー、`#`コメントに対応しており、実務でよく使われる書き方であれば貼り付けるだけでJSONに変換できます。

ただしYAML仕様(YAML 1.2)のすべてには対応していません。値を使い回すアンカー(`&`)・エイリアス(`*`)、2つ目以降の`---`で始まる複数ドキュメントストリーム、複数行文字列を表す`|`・`>`のブロックスカラー、`- - item`のような同一行ネストシーケンスは非対応です。こうした構文が含まれる場合はエラーになるため、事前にシンプルな書き方へ直してから貼り付けてください。処理はすべてブラウザ内で完結し、入力内容が外部のサーバーへ送信されることはありません。

YAML→JSON変換の使い方

  1. YAMLを貼り付ける 左側の入力欄に変換したいYAMLを貼り付けます。手元にデータがなければ「サンプルを読み込む」ボタンで例を試せます。
  2. 変換結果を確認する 入力すると同時に右側にJSONが表示されます。構文エラーがある場合はその場でエラーメッセージが表示されます。
  3. 整形表示のオン・オフを切り替える 「整形表示」をオンにするとインデント付きの読みやすい形に、オフにすると改行のない1行のJSONになります。用途に応じて切り替えてください。
  4. 結果をコピーまたはダウンロードする コピーボタンでクリップボードへ、ダウンロードボタンでJSONファイルとして保存できます。

使いこなすためのヒント

  • Kubernetesのマニフェストやdocker-compose.ymlなどYAML形式の設定ファイルをそのまま貼り付ければ、構造をJSONとして可視化でき、jqなどJSON専用のコマンドラインツールで扱えるようになります。
  • 先頭にゼロが付く郵便番号や電話番号のような値は、クォートで囲まずに書くと数値として解釈され先頭のゼロが失われてしまうため、文字列として保持したい値は必ずクォートで囲んでください。
  • アンカー(`&`)・エイリアス(`*`)や、`|`・`>` によるブロックスカラーを使った複雑なYAMLは対応していません。事前にシンプルな記法に書き換えてから貼り付けてください。
  • 「整形表示」のチェックを外すと改行なしの1行JSONで出力されます。APIのリクエストボディに貼り付けたい場合など、改行を含めたくない場面で便利です。

YAML→JSON変換の活用シーン

Kubernetesマニフェストの中身をjqで検索する

数百行に及ぶマニフェストをJSONに変換してjqへ渡せば、`.spec.containers[].image`のようなパス指定で目的の値だけを瞬時に取り出せます。

docker-compose.ymlをスクリプトから読み込む

YAMLの解析ライブラリを用意していないスクリプトでも、事前にJSONへ変換しておけば標準のJSONパーサーだけで設定内容を扱えます。

CI設定ファイルの構造を可視化する

GitHub ActionsやGitLab CIのYAML設定を貼り付けて構造をJSONで確認すれば、インデントの深さで見えにくかったネストの関係を把握しやすくなります。

YAMLしか受け付けないAPIやツールへ渡す前の下ごしらえ

JSONでデータを持っている場合でも、逆にYAML側の構造を先に理解しておきたいときの確認用途として使えます。

他のJSON変換ツールへつなぐ

変換後のJSONはJSONからTypeScript型定義やJSONフォーマッターにそのまま貼り付けて、さらに加工できます。

YAMLに関する用語集

YAML
"YAML Ain't Markup Language"の略で、インデントによって階層構造を表すデータ形式です。コメントを書けて引用符も最小限で済むため、人が直接編集する設定ファイルの形式として広く使われています。
マッピング
`key: value`の形でキーと値の組を並べたYAMLの構造です。JSONのオブジェクトに相当し、同じインデント幅の行が同じ階層のキーとして扱われます。
ブロックシーケンス
`- item`のようにハイフンと空白で始まる行を並べたYAMLの配列表現です。JSONの配列に相当し、本ツールでは同一インデントの`-`行が連続する限り1つの配列として読み取ります。
フロー形式
`[a, b, c]`や`{a: 1, b: 2}`のように、ブロック形式を使わず1行でシーケンスやマッピングを書く記法です。JSONの配列・オブジェクトの見た目に近い書き方です。
アンカーとエイリアス
`&name`で値に名前を付け、`*name`でその値を別の場所から参照するYAMLの機能です。同じ設定を使い回せますが、本ツールはこの機能には対応していません。
ブロックスカラー
`|`(改行を保持する)・`>`(改行をスペースに畳み込む)で始める、複数行にわたる文字列の書き方です。シェルスクリプトや長い説明文を埋め込む際によく使われますが、本ツールでは非対応です。
ドキュメントストリーム
1つのYAMLファイルの中に`---`区切りで複数の文書を含める仕組みです。Kubernetesで複数のリソースを1ファイルにまとめる際などに使われますが、本ツールは1文書分のみの変換に対応しています。

よくある質問

jqのようなJSON専用のコマンドラインツールでKubernetesマニフェストやCI設定ファイルの中身を検索・加工したい場合や、YAMLの入力を受け付けないAPI・スクリプトに設定内容を渡したい場合に、まずJSONへ変換してから利用すると便利です。

対応していません。本ツールはよく使われる書き方(マッピング・シーケンス・基本的なスカラー値)に絞った簡易パーサーのため、値の再利用を行うアンカー・エイリアスや、複数ドキュメントストリーム、`|`・`>` によるブロックスカラーはサポート対象外です。

もっとも多い原因はインデントの崩れです。同じ階層の項目でスペースの数がずれていたり、タブ文字でインデントしていたりすると解析できません。また `key: value` のコロンの後にスペースがない場合も解析に失敗します。

本ツールはYAML→JSONの一方向のみに対応しています。JSON自体の整形やYAML同士の整形・検証を行いたい場合は、サイト内の他のフォーマッター系ツールをご利用ください。
ツールくん

余談ですが ― なぜ設定ファイルはYAMLで、ツールはJSONを求めるのか

YAMLはコメントを書けて引用符も最小限で済む可読性の高さから、Kubernetes・docker-compose・GitHub ActionsやAnsibleのプレイブックなど、人間が直接編集する設定ファイルの形式として広く使われています。一方でJSONは仕様がシンプルで曖昧さが少なく、プログラムから機械的に処理しやすいため、APIのデータ交換やjqのようなコマンドラインツールの入力形式として定着しています。

この「人間はYAMLで書き、ツールはJSONを求める」というギャップを埋めるのがYAML→JSON変換です。特にKubernetesの複雑なマニフェストは数百行に及ぶこともあり、目的の値を探すのに`grep`では限界があります。一度JSONに変換してjqでクエリをかければ、`.spec.containers[].image`のようにパスを指定して必要な値だけを瞬時に取り出せます。

ただしYAMLの仕様(YAML 1.2)は非常に広く、アンカー・エイリアスによる値の再利用や複数ドキュメントストリーム、複数行文字列を表現するブロックスカラーなど高度な機能を多数含みます。本ツールはそうした仕様全体には対応せず、実務で頻出するマッピング・シーケンス・基本スカラーの「共通サブセット」に絞ることで、シンプルな依存なしの実装を実現しています。