ToolConvoyToolConvoyv2.6
DATA

YAML to JSON — YAML 設定をオンラインで JSON に変換

YAML データを JSON 形式に変換します。anchor、alias、merge key を解決し、インデントは設定可能、すべてブラウザ内で完結します。

● ローカル動作 · ゼロコピーパイプラインページ読み込み以降のツールによる通信:0件

YAML と JSON は兄弟のようなフォーマットです —— YAML はより人間に親しみやすい構文を持つ JSON であり、有効な JSON ファイルはすべて同時に有効な YAML ファイルでもあります。YAML から JSON への変換は DevOps における最も一般的なデータ形式変換です。なぜなら YAML は人間が書く言語(Kubernetes manifests、CI パイプライン、アプリケーション設定)であり、JSON は機械が読む言語(API レスポンス、Terraform state、クラウドプロバイダーの CLI 出力)だからです。変換自体はほとんど自明です —— YAML は JSON のスーパーセットです —— しかし、YAML には JSON が受け取る前に解決しなければならない機能が追加されています:anchor と alias(ファイル内の DRY 参照)、merge key(共有設定ブロックのディープマージ)、そしてより豊富な型システム(タイムスタンプ、16 進数、バイナリデータ)です。

anchor と alias は、変換時に最も混乱を招く YAML の機能です。YAML の anchor(&defaults)は再利用可能なブロックを定義し、alias(*defaults)は alias が現れる箇所にそのブロックを挿入します。JSON 出力には完全に展開されたデータが含まれます —— anchor と alias は YAML の記述上の便宜であり、データモデルではないため、JSON には対応する概念がありません。merge key(<<: *defaults)は、alias で参照されているマッピングを現在のマッピングにディープマージすることで解決され、現在のマッピング側のキーが優先されます。この解決は変換中に自動的に行われ、JSON の出力はマージ後の結果になります。

最後に下游への受け渡しについて:JSON 出力が何らかのプログラミング言語に渡される場合、YAML から JSON への変換と適切な JSON-to-Code ジェネレーター(JSON to TypeScript でフロントエンドの型、JSON to Python でデータ処理、JSON to Go でバックエンドの構造体)を組み合わせてください。JSON を別のツールの設定(Ansible inventory、Terraform variables、GitHub Actions inputs)にする必要があるなら、すべての構成管理ツールに JSON パーサーがあるため、JSON はちょうど良い中間フォーマットです。逆方向の変換(JSON から YAML)が必要な場合は、本サイトの JSON-to-YAML ツールが同じインデントとフォーマット制御で対応します。

広告

使い方

  1. YAML を貼り付ける

    YAML の文字列またはファイルを入力欄にドロップしてください。パーサーは YAML 1.2 に対応し、`---` で区切られた複数ドキュメント YAML も処理できます。各ドキュメントは個別の JSON オブジェクトに変換されます。

  2. JSON のフォーマットを選択

    デフォルトは 2 スペースのインデントと pretty-print です。compact モードに切り替えると空白を最小限に抑えられます(機械間のデータ交換向け)。スタイルガイド準拠のため、2 スペースと 4 スペースを切り替えることもできます。

  3. JSON をコピーまたはダウンロード

    JSON をクリップボードにコピーするか、.json ファイルとしてダウンロードできます。出力は有効な JSON (RFC 8259) であり、あらゆる言語の標準ライブラリで正しくパースされます。

よくある質問

変換器は YAML の anchor と alias に対応していますか?

はい。YAML の anchor(`&ref`)と alias(`*ref`)は展開後の値に解決されます。merge key(`<<: *ref`)も解決されます。JSON 出力には展開済みのデータが含まれます —— anchor と alias は YAML の記述上の便宜であり、データ構造ではありません。

変換器は YAML の複数ドキュメントファイルをどのように処理しますか?

複数ドキュメント YAML(`---` で区切られ、必要に応じて `...` で終わるドキュメント)は JSON 配列に変換され、各 YAML ドキュメントが 1 つの要素になります。単一ドキュメントのファイルは配列ではなく、単一の JSON 値を出力します。

YAML のタイムスタンプやブール値などのデータ型はどうなりますか?

YAML の型システムは JSON よりも豊富です。タイムスタンプ(`2024-01-15`)は ISO-8601 文字列(JSON における最も可搬性の高い表現)に変換されます。ブール値(`true`、`false`、`yes`、`no`、`on`、`off`)は JSON の `true` と `false` に正規化されます。null 値(`~`、`null`、空)は JSON の `null` になります。

YAML 入力のキー順序は保持されますか?

はい、保持されます。YAML 1.2 のマッピングはキーの挿入順序を保持し、JSON 出力もその順序に従います。ただし JSON 仕様はキーの順序を保証していないため、キーを再ソートするコンシューマは順序を変える可能性があります。本ツール自体は順序を保持します。

制限事項

  • 標準ライブラリ以外の YAML カスタムタグには非対応`!!python/object` や `!!java/com.example.Bean` のような YAML タグは文字列としてパースされますが、デシリアライズはされません。「preserve tags」オプションを有効にしている場合、タグのプレフィックスは `_tag` キーに保持されます。
  • 大きな YAML ファイルは深くネストされた JSON を生成する場合があるJSON 出力は YAML の構造をそのまま反映するため、何十階層ものネストが発生することがあります。一部の JSON コンシューマ(特に古いパーサー)にはスタック深さの制限があり、深くネストされた出力を拒否する場合があります。
  • 複数ドキュメント YAML を単一の JSON 配列にまとめる変換はロスが発生する複数の YAML ドキュメントを 1 つの JSON 配列にまとめる際、ドキュメント区切り記号のコメントやメタデータは失われます。1 ファイル内の複数 YAML ドキュメントのセマンティックなグループ分けは JSON には引き継がれません。

プラットフォーム別の注意点

macOS
CLI での同等コマンド: `yq eval -o json input.yaml` (Homebrew 経由でインストールした yq パッケージ)。yq がインストールされていない、あるいは YAML をチャットウィンドウから貼り付けただけのケースでは、ブラウザツールが適しています。
Linux
CLI での同等コマンド: `python3 -c 'import yaml,json; print(json.dumps(yaml.safe_load(open("file.yaml")), indent=2))'`。複雑な YAML に対して、引用符やエスケープを書き分ける手間をブラウザツールが省いてくれます。
Web
すべての処理はクライアントサイドで実行されます。YAML データがアップロードされることはありません。ページ読み込み後はオフラインでも動作します。
広告

関連ツール

広告