YAML ↔ JSON 相互変換
整形処理はすべてブラウザ内で完結します。データは送信されません
YAML の設定ファイルを JSON に、あるいはその逆に変換します。--- で区切られた複数ドキュメント(1 つのマニフェストに複数のリソースを書く Kubernetes の設定など)は、最初の 1 つだけを変換して残りを捨てるのではなく、JSON の配列として出力します。アンカー・別名・<< マージキーは実体に展開されるので、<< という文字列がキー名として残ることもありません。解析には完全な YAML 実装を使っているため、ブロックスカラーやフロー記法、暗黙の型付けも正しく扱えます。「これで足りる」程度の自作サブセットは、いずれある入力を別の意味に静かに解釈し、その設定でデプロイした頃には手がかりが何も残っていません。エラーは行と列を示します。
機能
- 双方向に対応:YAML → JSON、JSON → YAML。方向は自動判定、手動指定も可能
- 複数ドキュメントの YAML は JSON の配列に。最初の 1 つだけ変換して終わりません
- アンカーと別名を実体に展開し、<< マージキーも解決します
- 大きな整数は BigInt で処理:2^53 を超える値は文字列として出力し、桁を失いません
- 解析エラーは具体的な行と列を指します
- 出力の形を選択:展開、または 1 行にまとめる(コンパクト)。JSON のインデントは 2 / 4 スペースとタブ
- 出力はシンタックスハイライト付き。長い設定も構造が読み取れます
使い方
- YAML または JSON を貼り付けます(JSON として解析できれば JSON、それ以外は YAML として扱います)
- 結果はその場で更新されます。方向は手動でも指定できます
- 1 行にまとめるなら「コンパクト」、インデントを変えるならその設定を選びます
- コピーして結果を取り出します
よくある質問
- コメントやアンカー、元の整形はどこへ行ったのですか?
- 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 になってしまいます。
- 入力した内容は送信されますか?
- いいえ。解析と変換はブラウザ内で完結し、ページはリクエストを送りません。設定ファイルには鍵や接続文字列、社内アドレスが含まれることが多く、それらが端末から出ることはありません。
関連ツール
JSON 整形
整形JSON をブラウザ内で整形・圧縮・検証。折りたたみ可能なツリーで表示し、キーと値の検索、行番号とハイライト付きの編集、Python dict への変換にも対応。
JSON → コード
整形JSON サンプルから TypeScript interface、Go struct、Java class、Rust struct を生成。欠けたキーは任意に、型の衝突は共用型に。すべてブラウザ内で処理します。
XML 整形
整形XML をオンラインで整形・圧縮:タグの階層ごとにインデントし、コメント・CDATA・DOCTYPE はそれぞれ別の行に。属性値の中の空白はそのまま保持します。
SQL 整形
整形SQL をオンラインで整形:キーワードの大文字小文字を統一し、SELECT / FROM / WHERE などの句ごとに改行。圧縮は余分な空白とコメントを削除します。
JSON5 変換
整形JSON5 を標準 JSON に変換。コメント・引用符なしキー・シングルクォート・末尾カンマ・16進数・Infinity に対応し、エラーは行と列を示します。
HTML 整形
整形HTML をオンラインで整形・圧縮:タグの階層ごとにインデントし、テキストとインライン要素は同じ行のまま。script と pre の中身はそのまま保持します。