m moji kit v1.0.9
変換 YAML → JSON

YAML を JSON に変換する

YAML ファイルを JSON に変換するときの注意点を整理しています。アンカー・複数行文字列・型推測の落とし穴も解説します。

このページで変換する

Y
JSON ↔ YAML 変換
このページで直接使えます
ツールページで開く →

解説

YAML から JSON への変換は、YAML の機能を JSON のシンプルな構造にどう落とし込むかが要点です。 落とし穴の例として、YAML 1.1 では yes / no / on / off も真偽値扱いされ、クォートなしの yes が true に変換されます。01234 のような前ゼロ付き文字列は数値解釈されることがあります。アンカー (&base) とエイリアス (*base) は JSON にない機能なので、変換時には展開後の値が出ます。コメントも JSON にないため失われます。ツールでは js-yaml の safeLoad がよく使われます。

サンプル入力(YAML)

name: my-app
version: 1.0.0
deps:
  react: ^18.0.0
  astro: ^5.0.0
tags:
  - web
  - frontend

サンプル出力(JSON)

{
  "name": "my-app",
  "version": "1.0.0",
  "deps": {
    "react": "^18.0.0",
    "astro": "^5.0.0"
  },
  "tags": ["web", "frontend"]
}

使うときのコツ

  • · YAML 1.1 互換のパーサは yes/no/on/off を真偽値化する。意図しない場合は文字列をクォートで囲む
  • · アンカー&エイリアスは展開された値が JSON に出る。元のスクリプトが参照に依存していると意味的に変わる可能性
  • · load ではなく safe_load / safeLoad を使う(任意のオブジェクト構築を防ぐセキュリティ対策)

よくある質問

YAML の複数行文字列(| や >)は JSON でどう表現される?
YAML の | は改行を保持して JSON 文字列の \n 入りに、> は改行を空白に折り畳んで 1 行にします。
コメントは保持されますか?
保持されません。JSON にはコメント機能がないためです。コメントを残したい場合は JSONC や YAML のままで管理してください。
Kubernetes マニフェストを JSON に変換できる?
可能です。k8s API は JSON で受け付けるので、変換後の JSON を直接 kubectl apply -f に渡せます。
アンカーが多用された YAML の変換で値が冗長になる
JSON は参照を持たないので展開済みの値が複数箇所に重複します。サイズ削減には別途圧縮や正規化を行う必要があります。
yaml.load と yaml.safeLoad の違いは?
load は任意のクラスをデシリアライズできるためセキュリティリスクがあります。信頼できないソースの YAML には safeLoad を使ってください。
YAML 仕様準拠でない記述(タブインデント等)はどうなる?
多くのパーサはタブを拒否します。YAML 1.2 ではインデントは空白文字のみ許可されています。エラーになる場合はタブをスペースに置換します。

関連ツール

Y
JSON ↔ YAML 変換
JSON と YAML を双方向に変換します。自動判定とフロースタイル切替に対応。