変換
JSON ↔ YAML 変換
JSON データを YAML に、または YAML を JSON に変換します。入力形式は自動判定 / 手動指定の両方に対応、YAML 側のインデント幅とフロースタイル (インライン記法) も切替可能。
サンプル
直近の入力
全履歴 ·
履歴はあなたのブラウザにのみ保存されます。サーバーに送信されません。 設定
こんなときに使う
API レスポンスを Kubernetes マニフェストに転記する
JSON で返ってきた API レスポンスを YAML に変換して、k8s ConfigMap などに貼ります。
GitHub Actions の入力サンプルを試す
GitHub Actions の workflow は YAML ですが、サンプルを JSON で受け取ったときに変換して使えます。
Ansible playbook と JSON 設定の相互運用
Ansible は YAML が標準ですが、外部ツールが JSON を吐く場合があります。本ツールで橋渡し。
「YAML が好きな同僚」と「JSON が好きな同僚」の差を埋める
チーム内のフォーマット好みの違いを意識せず、共通の構造化データを扱えるようにします。
コメント付きの設定を JSON 化する前段
YAML はコメント可、JSON は不可。コメント付き YAML を JSON 化するとコメントは捨てられる、という挙動の確認に。
OpenAPI / Swagger の JSON ↔ YAML 切替
OpenAPI 仕様は JSON / YAML どちらも使えます。可読性のため YAML、ツール連携のため JSON、と用途で切り替えるとき本ツールが便利。
よくあるエラーと対処
ERR
YAML パースエラー: タブ文字が含まれる - 原因
- YAML 1.2 ではインデントは空白文字のみ許可されています。タブはエラーになります。
- 対処
- 事前にタブをスペースに置換してください(多くは 2 スペースに置換)。
ERR
YAML から JSON にしたら yes/no が真偽値になった - 原因
- YAML 1.1 互換のパーサは yes/no/on/off を真偽値として解釈します。
- 対処
- 文字列として保持したい場合は YAML 側でクォートで囲む('yes' のように)。本ツールは YAML 1.2 系で boolean は true/false のみに限定します。
ERR
JSON から YAML にしたら数値文字列が裸の数値になった - 原因
- JSON で文字列だった "01234" が YAML で 1234 と解釈されることがあります。
- 対処
- 本ツールは YAML 出力で数値文字列をクォートで囲みます。手動で出力結果を確認してください。
ERR
アンカー&エイリアス(&base / *base)が失われる - 原因
- JSON にはアンカーの概念がないため、YAML→JSON 変換で値が展開されます。逆方向ではアンカーが付与されません。
- 対処
- アンカーが必要なら、変換後に手動で追加してください。可逆な変換ではない点に注意。
CLI / 他言語でやる方法
yq
yq -o json input.yaml JSON to YAML は -o yaml。jq の YAML 版。
Python
python -c "import json, sys, yaml; print(yaml.safe_dump(json.load(sys.stdin)))" < input.json PyYAML の safe_dump を使用。逆方向は yaml.safe_load → json.dumps。
js-yaml (Node)
node -e "const y = require('js-yaml'); const j = require('./in.json'); console.log(y.dump(j))" 本ツールも js-yaml を内部で使用。
よくある質問
▶ JSON はそのまま YAML として有効ですか?
はい。JSON は YAML 1.2 のサブセットです。{ "a": 1 } をそのまま YAML としてパースすると同じ意味になります。可読性のためインデント形式に変換することが多いです。
▶ コメントは保持されますか?
JSON にはコメント機能がないため、YAML→JSON で失われます。逆方向もコメント付与は手動です。
▶ アンカー(&)とエイリアス(*)は?
JSON 側の表現がないので、YAML→JSON 時には展開された値が出ます。重複が増える可能性があります。
▶ フロースタイルとブロックスタイルとは?
フローは [1, 2, 3] のような JSON 風インライン、ブロックは - 1 のような改行ベース。短い配列はフロー、長いものはブロックが読みやすいです。
▶ YAML 1.1 と 1.2 の違いは?
1.1 は yes/no/on/off を真偽値扱い、1.2 は true/false のみ真偽値で JSON 互換性を優先。本ツールは 1.2 系(js-yaml デフォルト)です。
▶ 対応する文字コードは?
UTF-8 のみです。Shift_JIS / EUC-JP の YAML / JSON は事前に文字コード変換してください。
▶ ネストが深くても変換できる?
数 MB 程度までは問題なく変換できます。それ以上はブラウザが重くなるので CLI 推奨。
▶ YAML 内に JSON を文字列として埋めたい
YAML の文字列リテラルとして書けば OK です。複数行は | や > 演算子を使うと改行を保持できます。
もっと深く知る
公式ドキュメント / 仕様
学習サイト / 記事
※ Amazon へのリンクはアフィリエイトリンク(Amazon アソシエイト)を含みます。