YAML→JSON変換

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

使い方のヒント

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

よくある質問

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

→ すべての余談を見る