Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

YAML⇔JSON変換

YAMLとJSONをブラウザ上で相互に変換するツールです。YAMLからJSON、JSONからYAMLへの変換方向とインデントを選び、設定ファイルやAPIのデータを見やすく変換できます。構文エラーは行と列で確認できます。

ツール

0文字

変換方向
インデント

仕様

本ツールの仕様は以下の通りです:

  • 対応形式: YAML(YAML 1.2)とJSON。YAMLからJSON、JSONからYAMLの2方向に変換します
  • 文字コード: UTF-8
  • 入力文字数制限: なし(ブラウザの性能に依存)
  • 出力形式: 行番号付きのテキスト(色分けなし)
  • インデント: 「スペース2」(既定)「スペース4」「タブ」「圧縮」から選択。YAMLはタブをインデントに使えないため、タブはJSONを出力する「YAML → JSON」のときだけ選べます。「圧縮」は両方向で選べます
  • 圧縮: 改行とインデントを入れず、結果を1行で出力します。末尾にも改行を付けません
    • 「YAML → JSON」では、区切りの後の空白も入れない1行のJSONにします(例: {"name":"sng","tags":["a","b"]})
    • 「JSON → YAML」では、波かっこと角かっこで書くフロー形式の1行のYAMLにします(例: {name: sng, tags: [a, b]})。コロンとカンマの後の空白は、YAMLの文法で必要なため残ります
    • 改行を含む文字列と、---・...・% で始まる文字列は、ダブルクォートで囲みます。ダブルクォートの中はJSONと同じエスケープ表記で書くため、改行(LF・CR)を含む文字列も1行になり、YAMLに戻すと元の文字列になります。U+2028・U+2029などの特殊な区切り文字は文字のまま出力されるため、表示上は改行のように見える場合があります
    • 長い1行でも折り返しません。変換結果の欄を横にスクロールして確認できます
  • 値の型: YAML 1.2の規則で判定します
    • yes・no・on・off は真偽値ではなく文字列になります(真偽値になるのは true・True・TRUE と false・False・FALSE だけです)
    • null・~・値の省略は、JSONの null になります
    • 0x1F(16進数)と 0o14(8進数)は数値になります。先頭が0の 0777 は10進数の777、1_000 と 1:20 は文字列になります
    • 2024-01-01 などの日付は、日付型にせず文字列のまま出力します
    • .inf・-.inf・.nan はJSONで表せないため、エラーとして表示します
  • 複数ドキュメント: --- で区切った複数のドキュメントは、各ドキュメントを要素とするJSONの配列に変換します。ドキュメントが1つなら配列にしません。中身が空のドキュメントは数えず、コメントだけ、または --- だけのYAMLは null になります
  • アンカーとエイリアス: YAMLのエイリアス(*名前)は参照先の値に展開して出力します。マージキー(<<: *名前)も展開し、参照先のキーを取り込みます。JSONからYAMLへの変換では、アンカーとエイリアスは作りません
  • 展開の上限: 1つのアンカーを参照できるのは100回までです(エイリアスを入れ子にした場合は、展開後の大きさに応じて少なくなります)。変換後の値の数が100万を超える場合も、ブラウザが固まらないよう変換を中止してエラーを表示します
  • コメント: YAMLのコメント(# 以降)はJSONに出力されません。JSONからYAMLへの変換でもコメントは出ません
  • キーの順番: 入力の順番のまま出力し、並べ替えません。ただし数字だけのキー("1" など)は、JavaScriptの仕様により先頭に小さい順で並びます
  • キーの制限: 同じキーが重複するYAMLと、配列や連想配列をキーにしたYAMLは、JSONで表せないためエラーになります。1: a のような数値のキーは、JSONでは文字列のキー("1")になります
  • JSONの数値: JSONの数値はJavaScriptの数値として扱います。9007199254740991を超える整数は丸められ、1.0 は 1 になるなど、表記が変わる場合があります
  • JSONからYAMLへの変換: 配列のJSONも、--- で区切らず1つのドキュメントとして出力します。"true"・"123"・"yes"・"2024-01-01" のように真偽値や数値などと同じ書き方の文字列は、YAMLに戻しても文字列のまま読めるよう引用符で囲みます。長い文字列は折り返しません。同じキーが重複するJSONは、後に書いた値を使います。先頭がU+FEFF(BOM)の文字列は、YAMLに戻したときにBOMとして読み飛ばされないよう、ダブルクォートで囲みます。先頭や行頭に空白がある複数行の文字列など、ブロック形式では元の値に戻せない文字列も、ダブルクォートで囲みます
  • 変換の往復: YAMLとJSONを往復して変換すると、値の内容は保たれますが、コメント、アンカーとエイリアス、複数ドキュメントの区切り、引用符やブロック形式(| や >)などの書き方は元に戻りません
  • エラー表示: YAMLやJSONを解釈できなかった場合は、位置(何行目・何列目付近か)が分かればその位置と、エラー内容の1行目を表示します
  • 処理方式: ブラウザ内で処理し、入力内容はサーバーに送信しません(初回の変換時に、YAMLを扱うプログラムだけを読み込みます)

使い方

本ツールの使い方は以下の通りです:

  1. テキストボックスに、変換したいYAMLまたはJSONを入力します。Docker ComposeやGitHub Actionsの設定ファイル、APIのレスポンスなどをそのまま貼り付けられます。
  2. 変換方向を選択します。
    • 「YAML → JSON」:YAMLをJSONに変換します(既定)。
    • 「JSON → YAML」:JSONをYAMLに変換します。
  3. インデントを選択します。
    • 「スペース2」:スペース2つでインデントします(既定)。
    • 「スペース4」:スペース4つでインデントします。
    • 「タブ」:タブ1つでインデントします。JSONを出力する「YAML → JSON」のときだけ選べます。
    • 「圧縮」:改行とインデントを入れず、1行で出力します。「YAML → JSON」と「JSON → YAML」のどちらでも選べます。
  4. 「変換する」ボタンをクリックします。
  5. 下部に変換結果が行番号付きで表示されます。
    • 変換方向やインデントの設定を変えた後は、再度「変換する」ボタンをクリックすると反映されます。変換方向を変えても、入力内容と変換結果は入れ替わりません。
  6. YAMLやJSONを解釈できない場合は、エラーの位置と内容が表示されます。入力を修正して、もう一度「変換する」ボタンをクリックしてください。
  7. 必要に応じて以下を選択することができます。
    • 「クリップボードにコピーする」ボタン
      • 変換結果をクリップボードにコピーできます。
    • 「リセットする」ボタン
      • 入力内容と結果を消去し、変換方向とインデントを初期値に戻します。

※ YAMLのコメントやアンカーは変換後に残りません。元の設定ファイルを置き換える前に、変換結果の内容を確認してください。
※ 入力したYAMLとJSONはブラウザ内で処理され、サーバーには送信されません。

関連コンテンツ