ブログ
日本語

YAML JSON 変換 — YAMLをJSONにオンライン変換

YAMLをJSONに変換(安全なスキーマ・アンカーとマージキー・エラー行表示)

ブラウザー内で処理・アップロード不要

JSON結果

YAML→JSON変換とは

設定はYAMLで書かれることが多い一方、プログラム同士のデータのやり取りにはJSONが使われます。このツールはYAMLをJSONに変換します。入力に合わせて結果が更新され、構文エラーは行と列で表示されます。

使い方

  1. 入力欄にYAMLを貼り付けます。
  2. JSONの出力形式をスペース2つ、スペース4つ、タブ、圧縮(1行)から選びます。
  3. 結果をコピーします。
  4. エラーに行と列が表示されたら、その付近のインデント、クォート、コロンの後のスペースを確認します。

仕組み

  • 解析には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配列を出力し、いくつ見つかったかをお知らせします。

ほしいツールはありますか?