使い方
- 「YAML → JSON」欄にYAML形式の設定ファイルなどを貼り付けると、整形されたJSONが即座に表示されます。
- 逆に「JSON → YAML」欄にJSONを貼り付けると、インデント2のブロック形式のYAMLに変換されます。
- 構文エラーがある場合は、該当する行番号とともにエラー内容が表示されます。
仕組み・根拠
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 · カテゴリ: 開発・データ