データ変換

JSON・YAML相互変換

JSONとYAMLを相互に変換します。YAML 1.2 Core Schemaを基準に型を解釈し、データ構造の変換ツールとして扱います(YAML文書の完全な複製・round-trip editorではありません)。

入力データはサーバーへ送信されませんインストール不要無料で使えます

入力例

結果

JSONを入力して「変換」を押してください。

このツールでできること

JSON・YAML相互変換の主な機能です。

  • JSONとYAMLを相互に変換できます(変換方向は明示的に選択します)
  • YAML 1.2 Core Schemaを基準に型を解釈し、yes/no/on/off等を安易にtrue/falseへ変換しません
  • anchor・aliasは展開して変換します(展開回数の上限を超える場合は安全のためエラーになります)
  • merge key・Core Schema外のtag・複数文書・1.2以外のバージョン指定は、通常の構文エラーと区別して明示します
  • 安全に扱えない巨大な整数を、精度を落として黙って変換することはありません
  • YAML→JSON方向では、結果のインデント幅(2/4スペース)を選択できます

使い方

JSONとYAMLを変換する手順を説明します。

手順を見る
  1. 変換方向(JSON → YAML / YAML → JSON)を選びます
  2. テキストエリアへJSONまたはYAMLを貼り付けます
  3. 「変換」ボタンを押します(処理はブラウザ内で完結し、入力はサーバーへ送信されません)
  4. 結果を確認し、必要に応じてコピーします

こんなときに使えます

こんな場面でJSON・YAML相互変換が役立ちます。

利用シーンを見る
  • JSON形式のAPIレスポンスのサンプルを、Kubernetes manifest等のYAML設定へ組み込みたいとき
  • 複雑にネストしたYAML設定ファイルをJSONへ変換して、jq等のJSONツールで構造を確認したいとき
  • YAMLのyes/no等の型解釈に自信が持てず、変換結果で確認したいとき
  • コピー&ペーストしたYAMLにアンカーやmerge key等が含まれていないか確認したいとき

JSON・YAML相互変換の仕組み

このツールの動作の仕組みを説明します。

詳しい解説を見る

YAML 1.2 Core Schemaを基準にしています

YAMLには1.1と1.2という2つの仕様があり、値の型解釈が異なります。本ツールはJSONとの親和性が高いYAML 1.2のCore Schemaを基準に解釈します。これにより、後述のyes/noのような1.1固有の曖昧な自動変換の多くを避けています。

yes/no/on/offは真偽値になりません

YAML 1.2 Core Schemaでは、真偽値として解釈されるのはtrue/True/TRUE/false/False/FALSEのみです。yes/no/on/offは文字列のまま変換されます(大文字小文字を問いません)。timestampらしき値も自動的に日付型へは変換されず、文字列のまま扱われます。

anchor・aliasは展開されますが、一部の情報は失われます

YAMLのanchor(&)・alias(*)は、参照先の値をそのまま展開してJSONへ変換します。ただし、anchor名自体・comment(#以降)・quoteの種類("..."と'...'と無quoteの区別)はJSON側に対応する表現がなく失われます。過大なalias展開はDoS対策のため上限を超えるとエラーになります。

merge key・特殊なtag・複数文書・古いYAMLバージョン指定は非対応です

<<によるマッピングの合成(merge key)、!!timestamp/!!binary等のCore Schema外のtagやcustom tag、---区切りの複数文書、%YAML 1.1等の1.2以外のバージョン指定は、いずれも本ツールのMVPでは非対応です。これらを検出した場合、通常の構文エラーとは区別した専用のエラーメッセージを表示します。

安全に扱えない巨大な整数は変換できません

JavaScriptが誤差なく扱える整数の範囲(±9007199254740991)を超える整数は、精度が変わってしまう可能性があるため、値を黙って丸めるのではなく変換不可のエラーとして扱います。小数(浮動小数点数)は通常の精度で変換します。

よくある質問

YAMLのコメント(#以降)は保持されますか?

いいえ、保持されません。YAML→JSON変換ではコメントは常に失われます。JSONにはコメントを表現する仕組みがないため、JSON→YAML変換でもコメント付きの出力を生成することはありません。

yes/noやon/offはtrue/falseに変換されますか?

いいえ、変換されません。本ツールはYAML 1.2 Core Schemaを基準としており、真偽値として解釈されるのはtrue/false系の表記のみです。yes/no/on/offは大文字小文字を問わず文字列のまま扱われます。

アンカー(&)とエイリアス(*)には対応していますか?

はい。エイリアスの参照先の値をそのまま展開してJSONへ変換します。ただし、アンカー名自体はJSON側に対応する表現がないため失われます。展開回数が過大な場合は安全のためエラーになります。

merge key(<<)には対応していますか?

いいえ、対応していません。<<というキーがマージ目的で使われていると判断できる場合(クォートされていないプレーンな<<)は専用のエラーになります。"<<"のようにクォートされた文字列キーとしての利用は、通常のキーとしてそのまま変換されます。

巨大な整数を含むJSON/YAMLは変換できますか?

JavaScriptが誤差なく扱える整数の範囲(±9007199254740991)を超える整数は変換できません。値を黙って丸めて精度を落とすことを避けるため、変換不可のエラーとして明示します。

入力したJSON/YAMLはサーバーに送信されますか?

いいえ。JSON/YAMLの解析・変換はすべてブラウザ内で行われ、サーバーへの送信や保存は行いません。