YAML⇄JSON変換(設定ファイルの確認用)

YAMLとJSONを相互変換します。ブロック形式・フロー形式({}や[])・複数行文字列(|・>)・コメント・アンカー/エイリアスに対応した自作パーサで解析し、対応外の構文は行番号付きでエラー表示。JSON→YAMLはインデント2のブロック形式で出力します。

YAML → JSON


JSON → YAML

注意(YAML 1.1との違い): 本ツールはYAML 1.2のコアスキーマに基づき、yes / no / on / off を真偽値に変換せず文字列のまま扱います(true / false のみ真偽値)。古いパーサ(YAML 1.1系。一部のAnsible等)では no や on が自動的に真偽値になり、意図しない挙動を招くことがあるため、値として使う場合は明示的にクォートすることを推奨します。また、インデントにタブ文字は使用できません(半角スペースのみ)。

使い方

  1. 「YAML → JSON」欄にYAML形式の設定ファイルなどを貼り付けると、整形されたJSONが即座に表示されます。
  2. 逆に「JSON → YAML」欄にJSONを貼り付けると、インデント2のブロック形式のYAMLに変換されます。
  3. 構文エラーがある場合は、該当する行番号とともにエラー内容が表示されます。

仕組み・根拠

YAMLはYAML 1.2仕様で構造が定義されているデータ記述言語で、インデントによるブロック形式(マップ・シーケンス)と、JSONに似た{}・[]によるフロー形式の両方で同じデータを表現できます。実際、YAML 1.2はJSONを構文的なサブセットとして含むよう設計されています。本ツールはこの仕様に基づき、行ごとのインデント幅を解析してネスト構造を判定する独自のパーサを実装しており、外部のYAMLライブラリは使用していません。対応範囲はブロック/フロー形式のマップ・シーケンス、引用符付き/なしの文字列、数値・真偽値・null、行コメント(#)、複数行文字列(リテラルの|・フォールドの>)、アンカー(&名前)とエイリアス(*名前)です。タグ(!!strなど)は読み飛ばして無視します。JSON→YAML変換はJSON(RFC 8259)の値をそのままYAMLのブロック形式にシリアライズし、YAMLの予約語や数値と紛らわしい文字列だけを引用符で囲みます。

現場の落とし穴(YAML 1.1との違い): 一部の古いYAMLパーサ(YAML 1.1準拠、あるいはAnsibleなど)は、クォートしていないyes・no・on・offを自動的に真偽値(true/false)に変換します。これは「Norway問題」として知られる有名な落とし穴で、国名コードNO(ノルウェー)や設定値on/offのつもりで書いた文字列が意図せず真偽値になり、思わぬバグを引き起こすことがあります。本ツールはYAML 1.2のコアスキーマに従い、true/false(および大文字小文字違い)のみを真偽値として扱い、yes/no/on/offは文字列のまま解釈します。他のツールやライブラリと結果が食い違う場合は、この仕様差が原因である可能性があります。値として明確に使いたい文字列は、常にクォートで囲むことを推奨します。またYAMLの仕様上、ブロック形式のインデントにタブ文字は使用できません(半角スペースのみ)。タブを含む行があると、本ツールはエラー行を示して処理を止めます。

よくある質問

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

A. 対応していません。---が現れるとエラーになります。1つのYAMLドキュメントのみを貼り付けてください。

Q. マージキー(<<: *anchor)は使えますか?

A. 現時点では対応していません。マップの展開が必要な場合は、あらかじめ手動で値を展開してから貼り付けてください。

Q. 数値の前にゼロが付く値(0755など)はどう扱われますか?

A. YAML 1.2のコアスキーマでは先頭にゼロが付く数値は8進数として解釈されず、文字列として扱われます。ファイルパーミッションのような値を書く場合は、意図が伝わるようクォートすることを推奨します。

関連ツール

最終更新・根拠の確認日: 2026-09-10 · カテゴリ: 開発・データ