YAML→JSON変換ツールとは?

YAML to JSON Converterは、YAMLドキュメントを等価なJSON構造に即座に変換します。アンカー、エイリアス、複数行文字列、ネストされたマップ、シーケンスに対応しているので、Kubernetes設定やCI/CDパイプラインなどのYAMLデータをAPI・コード用のJSONに変換できます。

js-yaml をベースにしているので、単純な変換器が取りこぼしがちな YAML 1.2 の機能、つまりアンカーとエイリアス(&ref / *ref)、複数行ブロック文字列(|, >)、明示的な型タグ、yes/no/on/off などのブール表記をきちんと扱います。逆方向モードもあり、JSON を YAML に戻すときには構造を保ちつつ、読みやすいときはスカラ配列を一行に畳んでくれます。

使い方

  1. ステップ1 — YAMLコンテンツを貼り付けるか、.yml/.yamlファイルをアップロードします。構文エラーは行番号付きでハイライトされ、素早く修正できます。
  2. ステップ2 — 変換されたJSON出力を確認します。インデントはスペース2つ、4つ、タブ、コンパクトから選べます。
  3. ステップ3 — JSONをコピーするか、.jsonファイルとしてダウンロードします。逆変換モードでJSONからYAMLへの変換も可能です。

使用するタイミング

  • Kubernetes マニフェストや Helm values を JSON に直して、自前のバリデーションスクリプトに渡すとき。
  • GitHub Actions や GitLab CI の設定を、JSON しか受け付けないツールに食わせるとき。
  • docker-compose の schema エラーを追うため、YAML と JSON の間を行き来するとき。

結果

デプロイメントAPI用にdocker-compose.ymlをJSONに変換する必要があります。サービス、ボリューム、ネットワーク定義を含むYAMLを貼り付けると、すべてのネスト構造と配列が保持された有効なJSONが生成され、APIでそのまま使用できます。

よくある質問

YAML のアンカーとエイリアス(& と *)は扱えますか?
扱えます。js-yaml はパース時にアンカーを解決するので、出力 JSON には参照構文ではなく展開済みの値が入ります。YAML で 2 つのキーがアンカーを共有していても、JSON ではそれぞれが自分のコピーを持ちます。
YAML のブール(yes / no)がツールによって文字列になるのはなぜ?
YAML 1.1 では yes/no/on/off がブールでしたが、YAML 1.2 では true/false だけです。本ツールは 1.2 準拠なので、yes/no は明示的に true/false と書かない限り文字列のままです。いわゆる「ノルウェー問題」もここではほぼ起きません。
JSON を YAML に戻せますか?
戻せます。リバーストグルをオンにすると、入力が JSON、出力が YAML になります。ダンパーは入れ子のオブジェクトや配列を保持し、改行を含む長いキーは可読性のためブロックスカラ(|)として出力されます。
日付やタイムスタンプはどう扱われますか?
YAML の日付・タイムスタンプリテラルは JSON では ISO 8601 形式の文字列になります(JSON にネイティブな日付型がないため)。リバースで往復しても文字列のまま保持され、YAML の暗黙日付型に復元しません。こちらの方が安全な既定です。
インデント設定の使い分けは?
2 スペースは JavaScript と大半の API の事実上の標準。4 スペースは Python の PEP 8 に揃うので、結果を .py に埋め込むなら最適。コンパクト(0)は一行出力で、HTTP リクエストボディや curl コマンドに貼り付けるのに向きます。Tab は本物のタブ文字で JSON をインデントし、Go や Makefile に便利です。YAML はタブを使えないため、逆方向モードでは 2 スペースに切り替わります。

関連ツール