FIRST CH TOOLS / 20 JSON ⇄ YAML

JSON ⇄ YAML 相互変換&構文フォーマッター

どちらの欄に貼っても即時に反対側へ変換します。インデント幅や引用符の付け方を選んで整形でき、構文エラーは行と桁を指して何が悪いかを日本語で説明します。docker-composeGitHub Actions の設定を読み替えるとき、APIのJSONを設定ファイルに写すときに。

どちらに入力しても即時変換されます

JSON
YAML
0
入力のバイト数
0
出力のバイト数
0
キーの数
0
最大の入れ子の深さ
構文チェック結果

    貼り付けた内容がブラウザの外へ出ることはありません(YAMLの解析も生成も、外部ライブラリを使わずこのページの中だけで動いています)。ファイルの読み込みも端末内で読むだけで、アップロードは行いません。URLパラメータで直接呼び出せます: /json-yaml/?yaml=a%3A%201/json-yaml/?json=%7B%22a%22%3A1%7D&indent=4

    How to Use

    1. どちらかの欄に貼るJSONを左に貼れば右にYAMLが、YAMLを右に貼れば左にJSONが出ます。設定ファイルをドラッグ&ドロップしても読み込めます。
    2. 整形の仕方を選ぶインデント幅・引用符・キーの並び順を切り替えます。同じ形式のまま整えたいだけなら各欄の「整形」を押してください。
    3. 結果を確かめてコピーする構文エラーは行と桁を指して表示します。タブ字下げ・0755yes・重複キーなど、読み替えで意味が変わる箇所は警告に出ます。

    About This Tool

    JSONとYAMLは同じデータ構造(マップ・配列・スカラー)を別の書き方で表したものです。JSONは括弧と引用符で構造を示すので機械が読みやすく、YAMLは字下げで構造を示すので人が読みやすい。設定ファイルはYAML、APIのやり取りはJSONという住み分けになりやすく、その境目で読み替えが必要になります。

    YAMLはJSONの上位互換で、正しいJSONはそのまま正しいYAMLです(フロー表記がJSONの書き方そのものだからです)。逆向きはそうではありません。YAMLにはコメント・アンカー・複数ドキュメント・日付型など、JSONに対応するものが無い機能があるため、YAML→JSONでは必ず何かが落ちます。このツールは落ちるものを黙って消さず、コメントの消失・エイリアスの展開・複数ドキュメントの配列化として指摘に出します。

    構文エラーは行と桁で示します。ブラウザの JSON.parse が出すメッセージは実装ごとに文面が違い、位置の示し方も揃っていません。ここではJSONもYAMLも自前で読み進めているため、どのブラウザでも同じ位置と同じ説明が出ます。エラー行の前後2行を抜き出し、^ で桁を指します。

    YAMLは「読めるけれど意味が変わる」書き方が多い形式です。タブによる字下げ、0755 が10進数の755になること、yesNO が真偽値になること(Norway problem)、12:30 が60進数の750になること、キーの重複が黙って上書きされること——このツールはこうした箇所を変換のたびに警告に出します。詳しくは「YAMLの落とし穴」タブにまとめています。

    実際に使われているJSONも読みます。tsconfig.json のようなコメント入りのJSON、末尾にカンマが残ったJSON、シングルクォートや引用符なしのキーで書かれたJSONも読み取って変換し、「JSONとしては不正である」ことを指摘します。厳密さを理由に読めないより、読んだうえで直せる場所を教える方が役に立つと考えています。

    YAMLを書き出すときは、意味が変わらない形を選びますyes 0755 12:30 2026-08-12 のように別の型に読まれうる文字列、先頭や末尾に空白がある文字列、- * で始まる文字列は自動で引用符で囲みます。改行を含む文字列は | のブロック表記にしますが、行末に空白がある場合など復元できない形のときは "…" に倒します。

    数値は倍精度浮動小数点数として扱います。正確に表せるのは2の53乗(約9,007兆)までで、これを超える整数は下の桁が変わるため警告に出します。.inf.nan はJSONに無い値なので null になります。

    From AI Agents

    この変換ロジックは、MCP(Model Context Protocol)サーバー @first-ch/tools-mcpjson_to_yaml / yaml_to_json ツールとしても提供しており、ブラウザを使わずAIエージェントから直接呼び出せます。ファイルパスを渡して読み書きもできます。導入方法の詳細は AIエージェントからの使い方 を参照してください。

    導入

    claude mcp add firstch-tools -- npx -y @first-ch/tools-mcp

    呼び出し例

    # JSON を YAML へ(インデント2・必要なときだけ引用符)
    json_to_yaml(text='{"name":"web","ports":["80:80"]}')
    
    # YAML を JSON へ(1行にまとめる)
    yaml_to_json(text="name: web\nports: [80:80]", indent=0)
    
    # 設定ファイルを読んで変換し、別ファイルへ書き出す
    json_to_yaml(path="/tmp/config.json", outputPath="/tmp/config.yaml", indent=4)
    
    # 構文チェックだけしたい(エラーの行・桁と指摘が返る)
    yaml_to_json(path="/tmp/docker-compose.yml")

    Other Tools