piapia123
ja

YAML ↔ JSON 相互変換

整形

処理はすべてブラウザ内で完結します。データは送信されません

入力
ファイルをここにドロップすると読み込めます
出力

YAML の設定ファイルを JSON に、あるいはその逆に変換します。--- で区切られた複数ドキュメント(1 つのマニフェストに複数のリソースを書く Kubernetes の設定など)は、最初の 1 つだけを変換して残りを捨てるのではなく、JSON の配列として出力します。アンカー・別名・<< マージキーは実体に展開されるので、<< という文字列がキー名として残ることもありません。解析には完全な YAML 実装を使っているため、ブロックスカラーやフロー記法、暗黙の型付けも正しく扱えます。「これで足りる」程度の自作サブセットは、いずれある入力を別の意味に静かに解釈し、その設定でデプロイした頃には手がかりが何も残っていません。エラーは行と列を示します。

機能

  • 双方向に対応:YAML → JSON、JSON → YAML。方向は自動判定、手動指定も可能
  • 複数ドキュメントの YAML は JSON の配列に。最初の 1 つだけ変換して終わりません
  • アンカーと別名を実体に展開し、<< マージキーも解決します
  • 大きな整数は BigInt で処理:2^53 を超える値は文字列として出力し、桁を失いません
  • 解析エラーは具体的な行と列を指します
  • 出力の形を選択:展開、または 1 行にまとめる(コンパクト)。JSON のインデントは 2 / 4 スペースとタブ
  • 出力はシンタックスハイライト付き。長い設定も構造が読み取れます

使い方

  1. YAML または JSON を貼り付けます(JSON として解析できれば JSON、それ以外は YAML として扱います)
  2. 結果はその場で更新されます。方向は手動でも指定できます
  3. 1 行にまとめるなら「コンパクト」、インデントを変えるならその設定を選びます
  4. コピーして結果を取り出します

よくある質問

コメントやアンカー、元の整形はどこへ行ったのですか?
JSON にはコメントやアンカーを保持できる構造がありません。オブジェクト・配列・スカラーだけです。アンカーと別名は参照先の実体に展開されます(情報は失われますが意味は正しいままです)。コメントは破棄するしかありません。重要なコメントは JSON の外に保管してください。
大きな整数が JSON で文字列になるのはなぜですか?
JSON に大きな整数の型がなく、JavaScript の数値は 2^53 を超えると隣り合う整数を区別できなくなるためです。9007199254740993 は静かに ...992 になります。正しく見えて 1 だけずれた数値を出すより、文字列として出すほうが安全です。型は変わりますが、値は 1 文字も失われず、結果からその変化を確認できます。
YAML 1.1 の yes / no はここでは真偽値ですか?
いいえ。ここでは YAML 1.2 として扱うため、yes・no・on・off はすべて通常の文字列で、真偽値は true と false だけです。これは重要な違いです。1.1 の解析器で同じファイルを読むと `password: no` が真偽値になり、パスワードが false になってしまいます。
入力した内容は送信されますか?
いいえ。解析と変換はブラウザ内で完結し、ページはリクエストを送りません。設定ファイルには鍵や接続文字列、社内アドレスが含まれることが多く、それらが端末から出ることはありません。

関連ツール