🗂 YAML⇔JSON変換
YAMLとJSONを、ブラウザ内だけで相互変換します。マッピング・シーケンス・スカラー・コメントに対応した簡易変換です。
入力
JSON(結果)
YAMLの一般的な書き方(マッピング・シーケンス・スカラー・コメント)に対応した簡易変換です。アンカー・複数行ブロック・複数ドキュメントなどの高度な記法には対応していません。入力はブラウザ内だけで処理され、サーバーには送信されません。
解説
YAMLとJSONは、どちらも設定やデータを表現するための形式で、表せる中身(マッピング・配列・文字列・数値・真偽値・null)はほぼ同じです。違いは書き方で、JSONが波かっこ・角かっこ・カンマ・引用符を使うのに対し、YAMLはインデントと「- 」で構造を表し、引用符やカンマを省けます。そのため、人が読み書きする設定ファイルはYAML、プログラムやAPIがやり取りするデータはJSON、という使い分けがよく行われます。本ツールは、その2つをブラウザ内だけで相互に変換します。
YAML→JSONでは、インデントで表されたマッピング(key: 値)とネスト、シーケンス(- 項目)、スカラー(引用符あり/なしの文字列・数値・true/false・null や ~)、行コメント(#)を解釈してJSONに変換します。引用符の無い 2 は数値、true は真偽値、null や ~ は null として扱われるため、JSONにしたときの型が意図どおりかを確認できます。文字列として残したい値は "2" のように引用符で囲んでください。
JSON→YAMLでは、JSONを解析したうえでインデント2スペースのYAMLとして出力します。文字列は原則そのまま書き出しますが、「123」や「true」のように別の型に見えてしまう文字列、コロンや # を含む文字列、前後に空白がある文字列などは自動的に引用符で囲み、読み直したときに意味が変わらないようにしています。空の配列・空のオブジェクトは [] / {} と1行で出力します。
対応しているのは、実務でよく使われるYAMLの中心的な書き方に絞った「サブセット」です。具体的には、マッピング・ネスト・シーケンス・スカラー・コメント・空の [] と {} まで。一方で、アンカーとエイリアス(&x / *x)、複数行ブロック(| や >)、要素を含むフロー記法([1, 2] や {a: 1})、複数ドキュメント(--- 区切り)、タグ(!)には対応していません。これらは意図的に非対応としており、含まれていた場合は「何行目の何が非対応か」を明示したエラーメッセージを表示します。黙って壊れた結果を返さないための設計です。
エラーメッセージには行番号が付きます。よくあるつまずきは、コロンのあとに半角スペースを入れ忘れる(key:値 ではなく key: 値 と書く)、同じ階層でインデントの深さがずれる、インデントにタブ文字を使う(YAMLの仕様上使えません)、の3つです。JSON側の構文エラーについても、可能な範囲で「◯行目◯文字目付近」と位置を示します。
変換はすべてお使いのブラウザの中(JavaScript)で完結し、入力したデータがサーバーに送信されることはありません。外部ライブラリも使っていないため、アプリケーションの設定ファイル、CI/CDの定義、APIのレスポンスなど、社外に出したくないデータでも安心して貼り付けられます。ただし本ツールは簡易実装のため、複雑なYAMLを厳密に扱う必要がある場合は、専用のYAMLライブラリでの変換・検証を併用してください。
よくある質問
入力したデータはどこかに送信されますか?
いいえ。変換はすべてお使いのブラウザ内(JavaScript)で行われ、入力データがサーバーに送信されることはありません。設定ファイルや業務データでも安全に変換できます。
どこまでのYAML記法に対応していますか?
インデントによるマッピング(key: 値)とネスト、シーケンス(- 項目)、スカラー(引用符あり/なしの文字列・数値・true/false・null や ~)、行コメント(#)、空の [] と {} に対応しています。一般的な設定ファイルの多くはこの範囲で変換できます。
対応していないYAML記法は?
アンカー・エイリアス(&x / *x)、複数行ブロック(| や >)、要素を含むフロー記法([1, 2] や {a: 1})、複数ドキュメント(--- 区切り)、タグ(!)には対応していません。これらが含まれる場合は、その行を指摘するエラーメッセージを表示します。
数値や true / false はどう扱われますか?
引用符の無い 2 や -3.5 は数値、true / false は真偽値、null や ~ は null に変換します。文字列として扱いたい場合は "2" のように引用符で囲んでください。逆にJSON→YAMLでは、数値に見える文字列や true に見える文字列は自動で引用符を付けて出力します。
「007」のような先頭ゼロの値はどうなりますか?
先頭ゼロの値は数値化すると 7 になり表記が変わってしまうため、文字列として扱います。数値にしたい場合は先頭のゼロを外して 7 と書いてください。
インデントはスペース何個にすればいいですか?
半角スペースであれば個数は問いません(2スペースが一般的)。ただし同じ階層は同じ深さに揃える必要があります。タブ文字はYAMLの仕様上インデントに使えないため、エラーとして知らせます。JSON→YAMLの出力は常に2スペースです。
エラーが出たときはどこを見ればいいですか?
結果欄に「◯行目: …」の形式で問題のある行と理由を表示します。よくある原因は、コロンのあとに半角スペースが無い、インデントが揃っていない、非対応の記法(アンカー・複数行ブロックなど)が含まれている、の3つです。