🗂 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つです。