YAML JSON 変換 — YAMLをJSONにオンライン変換
YAMLをJSONに変換(安全なスキーマ・アンカーとマージキー・エラー行表示)
ブラウザー内で処理・アップロード不要
YAML→JSON変換とは
設定はYAMLで書かれることが多い一方、プログラム同士のデータのやり取りにはJSONが使われます。このツールはYAMLをJSONに変換します。入力に合わせて結果が更新され、構文エラーは行と列で表示されます。
使い方
- 入力欄にYAMLを貼り付けます。
- JSONの出力形式をスペース2つ、スペース4つ、タブ、圧縮(1行)から選びます。
- 結果をコピーします。
- エラーに行と列が表示されたら、その付近のインデント、クォート、コロンの後のスペースを確認します。
仕組み
- 解析にはjs-yamlとYAML 1.2のcoreスキーマを使います。真偽値・null・数値として読むのは、
true/false、null(または~)、10進・8進・16進の整数と浮動小数点数だけです。それ以外はすべて文字列で、クォートで囲んだ"123"は常に文字列です。 - カスタムタグや
!!js/functionのようなコード用のタグには対応しておらず、エラーになります。コードとして実行されることは決してありません。 - アンカー(
&)とエイリアス(*)は値に展開し、<<のマージキーも解決します。1つのマッピング内でキーが重複しているとエラーになります。 - エラーの位置は1から数えた行と列です。
- 複数のドキュメントは配列にまとめます。空の入力はエラーです。
- JSONで表せない値はJSONの規則に従って変換されるため、
.infや.nanはnullになります。2^53を超える整数はJavaScriptの数値として読み込む時点で丸められます。
例
入力:
base: &b
x: 1
item:
<<: *b
name: 山田太郎
結果:
{"base": {"x": 1}, "item": {"x": 1, "name": "山田太郎"}}
よくある質問
!!js/functionのようなタグは実行されますか?
いいえ。文字列・数値・真偽値・null・配列・オブジェクトといった単純なデータだけを読む安全なスキーマを使っています。カスタムタグや関数は実行されず、エラーとして表示されます。
YAMLのどこが間違っているかはどこで確認できますか?
変換に失敗すると、問題が見つかった行と列をパーサーの説明とともに表示します。よくある原因はインデントの崩れや、閉じていないクォート・括弧です。検出位置は本当の原因より少し後になることがあるので、その上の行も確認してください。
yes、no、on、offは真偽値になりますか?
いいえ。YAML 1.2に従い、真偽値になるのはtrueとfalseだけで、yes、no、on、offは文字列のままです。2024-01-02のような日付風の値も、日付オブジェクトにはならず普通の文字列のままです。
「エイリアスが多すぎる」というエラーが出るのはなぜですか?
安全のため、1つのドキュメントに含められるエイリアスは最大100個です。エイリアスを入れ子にして出力を指数関数的に膨らませる入力(エイリアス爆弾)はブラウザーのタブを固まらせることがあるので、エイリアスの数と結果のサイズ(約5 MB)の両方を制限しています。普通の設定ファイルならこの上限には遠く及びません。
---で区切られた複数のドキュメントがある場合はどうなりますか?
ドキュメントが1つならその値を、2つ以上ならドキュメントを順番に並べたJSON配列を出力し、いくつ見つかったかをお知らせします。