本文へスキップ
App Museum
English

JSON⇔YAML変換ツール

JSONとYAMLを相互に変換します。--- 区切りの複数ドキュメントのYAMLとJSON配列の相互変換にも対応し、設定ファイルの書式変換やデータ確認に使えます。

Kubernetes のマニフェストのように1つのファイルに複数のドキュメントを並べたいときに、JSON → YAML で使います。YAML → JSON では、チェックの有無にかかわらず複数のドキュメントを配列にまとめます。

使い方

  1. テキストエリアにJSONまたはYAMLを貼り付けます
  2. 「JSON → YAML」または「YAML → JSON」ボタンを押します
  3. 変換結果が下に表示され、「コピー」でコピーできます

入力がどちらの形式かは自動判定しません。押したボタンの向きで変換します。入力やチェックボックスを変えると、表示中の結果とエラーは消えるので、もう一度ボタンを押してください。

内部的にはYAML 1.2互換のパーサー(js-yaml)を使ってブラウザ内で処理しています。

具体例

テキストエリアに {"name": "Alice", "age": 30} と入力して「JSON → YAML」を押すと、次のように変換されます:

name: Alice
age: 30

入れ子のオブジェクトと配列を含むJSONも変換できます。次のJSONを入力します。

{ "service": { "name": "web", "ports": [80, 443], "env": { "DEBUG": false } } }

「JSON → YAML」の結果は次のとおりです。

service:
  name: web
  ports:
    - 80
    - 443
  env:
    DEBUG: false

このYAMLを入力して「YAML → JSON」を押すと、2スペースのインデントで整形したJSONに戻ります。

複数ドキュメント(--- 区切り)のYAML

Kubernetes のマニフェストのように、1つのファイルに --- で区切って複数のドキュメントを並べたYAMLも変換できます。

  • YAML → JSON:ドキュメントが2つ以上あると、書かれた順にJSONの配列にまとめ、結果の上に「2個のドキュメントを、書かれた順にJSONの配列にまとめました。」のように表示します。ドキュメントが1つなら、配列にせずそのまま変換します。
  • 中身のないドキュメント:末尾の --- のあとや、--- が2つ続いた間のように、何も書かれていないか、コメントだけのドキュメントは除き、除いた数を表示します。--- null や --- ~ のように値として null を書いたドキュメントは除かず、null として残します。
  • アンカー:アンカー(&名前)は、それを書いたドキュメントの中でだけ使えます。別のドキュメントのアンカーを *名前 で参照すると unidentified alias というエラーになります。
  • JSON → YAML:「最上位の配列を、--- で区切ったドキュメントに分ける」にチェックを入れると、配列の要素を1つずつ別のドキュメントにして --- の行で区切ります。最上位が配列でないときと空の配列のときは、1つのドキュメントとして書き出し、その理由を表示します。要素が1個の配列は、その要素だけのドキュメントになるため、「YAML → JSON」で戻すと外側の配列がなくなります。チェックを入れなければ、配列は - で始まる1つのYAMLになります。

たとえば次のYAMLを入力して「YAML → JSON」を押します。

kind: Service
name: web
---
kind: Deployment
replicas: 2
---

最後の --- のあとは中身のないドキュメントなので除かれ、次の配列になります。

[
  {
    "kind": "Service",
    "name": "web"
  },
  {
    "kind": "Deployment",
    "replicas": 2
  }
]

この配列を入力し、チェックを入れて「JSON → YAML」を押すと、末尾の --- を除いた元のYAMLに戻ります。

YAML → JSON での値の読み取り方

YAML 1.2のコアスキーマに従って、引用符のない値の型を決めます。

  • true / True / TRUE、false / False / FALSE は真偽値になります
  • yes、no、on、off は真偽値ではなく文字列のままです
  • null / Null / ~ と、値を書かなかったキーは null になります
  • 0o17 は8進数として 15、0x1F は16進数として 31 になります。017 は10進数の 17 です
  • 1e3 は 1000 になります
  • 2026-10-11 や 12:30:00 のような日付・時刻は文字列のままです
  • 1: a や true: b のように文字列以外で書いたキーは、JSONでは "1"、"true" という文字列のキーになります
  • | で書いた複数行の文字列は、改行を \n として含む1つの文字列になります

JSON → YAML での出力形式

  • インデントは2スペースです。キーは入力の順番で出力しますが、"2" や "10" のように整数として読めるキーは、数値の小さい順に先頭へ並びます
  • 配列は - で始まる行に、空の配列と空のオブジェクトは []、{} になります
  • "yes"、"123"、"true"、"null"、"2026-10-11" のように、引用符がないと別の型に読める文字列やコメント記号などを含む文字列は、'123' のように一重引用符で囲みます
  • 改行を含む文字列はブロック形式で出力します。末尾の改行の数に応じて |-・|・|+ を使い分けます
  • 空白を含む、およそ80文字以上の長い文字列は、>- の折りたたみ形式で複数行に分けて出力します。読み込むと元の1つの文字列に戻ります。空白を含まない文字列は、長くても1行のまま出力します
  • JSONで同じキーを2回書いた場合は、後に書いた値だけが残ります

よくあるエラーと対処

構文のエラーは、パーサーが返す英語の文面をそのまま表示します。YAMLのエラーには、問題のある行と桁が付きます。このアプリが変換を止めた場合(変換するYAMLがない、正確に保てない数値、大きすぎる変換結果)は、理由を日本語で表示します。

  • JSONの末尾のカンマ、一重引用符、コメント:{"a": 1,} や {'a': 1} はJSONとして不正なのでエラーになります。カンマを消し、引用符を二重引用符にしてください。
  • YAMLのインデントにタブ:tab characters must not be used in indentation と表示されます。タブをスペースに置き換えてください。
  • YAMLのインデントのずれ:bad indentation of a mapping entry と表示されます。同じ階層のキーの字下げをそろえてください。
  • YAMLのキーの重複:同じ階層に同じキーが2つあると duplicated mapping key と表示されます。
  • 空の入力やコメントだけのYAML:「YAML → JSON」では、空の入力、コメントだけ、--- だけのYAMLは、変換するYAMLがないことを日本語で表示します。「JSON → YAML」で空の入力を変換すると、JSONのパーサーのエラーになります。
  • !!binary や独自のタグ:unknown scalar tag と表示されます。タグを外すか、値を文字列に書き直してください。
  • 変換結果が大きすぎる:YAML → JSONの結果が、改行と字下げを含めて500万文字を超える場合は、変換を停止します。エイリアス(*名前)は参照するたびに中身がそのまま書き出されるため、エイリアスを含む値をさらにエイリアスで何度も参照すると、数百文字のYAMLでも結果が100MBを超えることがあります。エイリアスを減らすか、YAMLを分けて変換してください。

入力データの扱い

変換はすべてこのブラウザ内で行います。入力したJSONやYAMLはサーバーへ送信されず、保存もされません。ページを再読み込みすると入力と結果は消えます。

FAQ

YAMLのコメントやアンカー(&/*)には対応していますか?

YAML → JSON変換時、コメントは無視され、アンカー・エイリアスは展開された値として読み込まれます。JSON → YAML変換時にコメントは出力されません(JSONにコメントの概念がないため)。

マージキー(<<)には対応していますか?

いいえ。マージキー << はYAML 1.1の拡張で、YAML 1.2のコアスキーマには含まれないため展開されず、<< という名前の通常のキーとして扱われます。たとえば b: {<<: *x, j: 2} は、*x の中身が b に展開されるのではなく、"<<" というキーにエイリアスの値が入ったJSONになります。docker-composeなどマージキーを使うYAMLを変換する場合は、あらかじめ展開した形に書き直してください。

version: 1.10 が 1.1 になってしまいます

引用符のない 1.10 は数値として読まれるため、JSONでは 1.1 になります。同じように 1.0 は 1 に、00123 は 123 になります。バージョン番号や郵便番号のように桁をそのまま残したい値は、"1.10" のように引用符で囲んで文字列にしてください。

yes や on が true になりません

YAML 1.2のコアスキーマでは、真偽値は true と false(先頭だけ大文字、すべて大文字の書き方を含む)だけです。yes、no、on、off を真偽値として扱うのはYAML 1.1の読み方で、このアプリでは文字列として出力します。真偽値にしたい場合は true / false に書き換えてください。

変換に失敗するとどうなりますか?

構文が不正な場合はエラーメッセージが表示されます。また、.nan や .inf などJSONで表現できない非有限数は、null へ置換せず変換エラーにします。文字列として保持する場合は ".nan" のように引用符で囲んでください。同じ理由で、12345678901234567890 のように安全に扱える整数の範囲(±9007199254740991)を超える数値も、値とYAMLの数値キーのどちらであっても、丸めた値を出力せず変換エラーにします。桁を保つには引用符で囲んで文字列にしてください。

複数ドキュメント(--- 区切り)のYAMLには対応していますか?

はい。「YAML → JSON」では、--- で区切られた2つ以上のドキュメントを、書かれた順のJSON配列にまとめます。中身のないドキュメントは除きます。逆に、JSONの配列を複数ドキュメントのYAMLにするには、「最上位の配列を、--- で区切ったドキュメントに分ける」にチェックを入れて「JSON → YAML」を押してください。詳しくは上の「複数ドキュメント(--- 区切り)のYAML」を見てください。

JSONを整形するだけの用途にも使えますか?

多くのJSONはYAMLとしても読めるため、JSONを貼り付けて「YAML → JSON」を押すと、2スペースのインデントで整形したJSONが得られます。ただし安全な範囲を超える整数が含まれるとエラーになります。

種別
ユーティリティ
カテゴリ
開発者向け
タグ
json
yaml
converter
developer
  • docker run → Docker Compose 変換ツール(compose.yaml 作成)

    docker run のコマンドを貼るだけで compose.yaml に変換。ポート・環境変数・ボリューム・ネットワーク・ヘルスチェック・GPU など docker run の全オプションを読み取り、複数のコマンドを1つのファイルにまとめます。$(pwd) や $ の書き換え、Compose に無いオプションも知らせます。

    ユーティリティ開発者向けdockerdocker-composecomposeyamlcontainerconverterdeveloper
  • CSV⇔JSON変換ツール

    CSV(カンマ区切り)やTSV(タブ区切り)とJSONを相互に変換します。Excelやスプレッドシートの表をJSONにしたり、JSONの配列を表に戻したりできます。入れ子のJSONは address.city のような列に展開します。結果は、Excelで文字化けしないCSVファイルとしてダウンロードできます。

    ユーティリティ開発者向けcsvjsontsvconverterdeveloper
  • カラーコード変換ツール

    HEX・RGB・HSL のカラーコードを相互に変換し、HSV・CMYK・OKLCH の表記も表示。カラーピッカーやプレビューで確認でき、白・黒や指定した文字色とのコントラスト比(WCAG)も分かります。

    ユーティリティ開発者向けcolorhexrgbhslhsvcmykoklchcontrastcontrast-checkerwcagconverterdeveloper