YAML から JSON への変換

左側に YAML を貼り付けると、右側に JSON が表示されます。すべてブラウザ上で動作 — アップロードもサインアップも不要です。

  1. 左側のテキストエリアに YAML を貼り付けます。
  2. 「JSON に変換」をクリックします。出力が右側に表示されます。
  3. 結果をコピーするか、ダウンロードをクリックして data.json として保存します。
  4. 変換が失敗すると、エラーメッセージは問題のある行を指します。
何ができるのか?

YAML 1.2 ドキュメントを等価な JSON に変換します。マッピングはオブジェクトに、シーケンスは配列になり、スカラは YAML 規則に従って数値、ブール、null、または文字列として型付けされます。アンカーとエイリアスは変換中に解決されます。`---` で区切られたマルチドキュメントストリームはドキュメント配列に平坦化されます。

YAML 入力:

name: Ada
tags:
  - math
  - logic
active: true

JSON 出力:

{
  "name": "Ada",
  "tags": [
    "math",
    "logic"
  ],
  "active": true
}

よくある YAML エラーと修正方法

YAML は空白に敏感で、これがほとんどの「パース失敗」メッセージの原因です。パーサは失敗の行と列を示します — これらのパターンに注意してください。

  • スペースの代わりにタブ。 YAML 1.2 ではインデントにタブを禁止しています。すべてのタブをスペースに置き換えてください — ほとんどのエディタには「タブをスペースに変換」コマンドがあります。
  • インデントレベルの混在。 4 スペースインデントの兄弟の下に 2 スペースインデントの子があると失敗します。インデント幅を 1 つ(通常 2 スペース)選び、ドキュメント全体で一貫して使用してください。
  • ブール値のように見える文字列。 YAML 1.1 では `yes`、`no`、`on`、`off` がブール値としてパースされます — 国コード(「NO」の罠)やバージョン文字列で意外な動作です。値を引用符で囲んでください: `country: "NO"`。js-yaml のデフォルトは YAML 1.2 で修正されていますが、現実の入力では依然として問題が発生します。
  • 引用符のない特殊文字。 `- `、`:`、`?`、`&`、`*`、`!`、`|`、`>`、`\'`、`"`、`%`、`@`、`` ` `` で始まる値は引用符で囲む必要があります。最も安全なパターン: 句読点を含む文字列はすべて引用符で囲んでください。
  • 閉じられていない引用符。 閉じる `"` または `\'` がないと、パーサはファイルの残りを次の引用符まで文字列の一部として扱います — 通常、実際のミスから遠く離れた紛らわしい行番号が出力されます。
  • アンカー / エイリアスの不一致。 未定義のアンカー(`&name`)を参照するエイリアス(`*name`)はパースエラーを発生させます。すべてのエイリアスに、ドキュメント内で先に宣言された一致するアンカーがあることを確認してください。
よくある質問

これは「Norway problem」のような YAML 1.1 の癖をサポートしますか?

いいえ — そして意図的にそうしています。js-yaml を YAML 1.2 モードで使用しており、引用符のない `NO` はブール値 false ではなく文字列 "NO" としてパースされます。YAML 1.1 のブール値に依存する入力がある場合は、貼り付け前に明示的に引用符で囲んでください。1 つのツールに 2 つの仕様を混在させると、データが暗黙的に誤訳されます。

YAML のアンカーとエイリアスはどうなりますか?

変換時に解決されます。結果の JSON には重複した値が単純なデータとして含まれます — JSON には等価な参照構文がないため、アンカーは JSON に保持されません。参照を保持する必要がある場合、JSON は適切なターゲットフォーマットではありません。

マルチドキュメント YAML ファイルを変換できますか?

はい。`---` で区切られた複数のドキュメントを含む YAML ファイルは JSON 配列に変換され、各ドキュメントが配列の 1 要素になります。ファイルが単一ドキュメントの場合、トップレベルで単一の JSON オブジェクトまたは値に変換されます。

なぜ日付文字列が ISO 形式で出力されるのですか?

YAML にはネイティブのタイムスタンプ型(`2025-12-31`)があります。パーサはこれを JavaScript の Date として読み取り、JSON では ISO 8601 文字列としてシリアライズされます。元のリテラルテキストを保持するには、YAML で値を引用符で囲んでください: `release: "2025-12-31"`。

機密の YAML 設定でも安全ですか?

はい。すべてはあなたのブラウザで実行されます — 入力はこのページの JavaScript で解析・変換され、サーバーに送信されません。ログも、入力自体への分析も、保持もありません。ブラウザの開発者ツールで確認してください: 変換クリック時のネットワーク要求はゼロです。

どれくらいの大きさの YAML ファイルを処理できますか?

ブラウザのメモリ上限まで対応できますが、約 10 MB を超える YAML ではテキストエリア UI が遅く感じられ始めます。より大きな入力は、チャンクに分けて変換するか、コマンドラインで同じライブラリ(js-yaml)を使ってください。