JSON → YAML 変換ツール
JSON を Kubernetes、Docker Compose、GitHub Actions、Ansible 向けの、きれいで読みやすい YAML に変換。インデント、スタイル、引用符を細かく設定できます。
ブラウザ内で動作登録不要アップロードなし
JSON → YAML 変換の使い方
- 左の欄に JSON を貼り付けるか、
.jsonファイルを開きます。 - 入力と同時に右側に YAML が表示されます。
- インデント(スペース 2 個または 4 個)とスタイルを選びます:ブロック(1 行に 1 キー)か、指定したネストレベルからのフロー(
{a: 1}/[x, y])です。 - 引用符のスタイルを選び、アルファベット順にしたい場合はキーを並べ替えにチェックを入れます。
- YAML をコピーまたはダウンロードします。不正な JSON は行、列、考えられる原因とともに表示されます。
なぜ JSON を YAML に変換するのか?
JSON は機械や API に最適ですが、人が読んだり編集したりするには YAML の方が楽です。波括弧も必須の引用符もなく、コメントも書けます。Kubernetes、Helm、Docker Compose、GitHub Actions、GitLab CI、Ansible など、ほとんどのインフラツールは YAML で設定しますが、元になるデータ(API の出力、kubectl get -o json、Terraform の state)は JSON であることがよくあります。
ブロックスタイルとフロースタイル
ブロックスタイルは各キーとリスト要素を 1 行ずつ置く書き方で、設定ファイルでは一般的な選択です。フロースタイルは JSON のようにインラインの {} と [] を使い、短い末端の構造をコンパクトに保ちます。「レベル 2 からフロー」は上位 2 階層をブロックスタイルにし、それより深いものをインライン化します。ポートや環境変数のような小さなオブジェクトの長いリストに向いています。
安全な引用符付け
YAML パーサーが誤読する可能性のある文字列は自動的に引用符で囲みます。'no'、'on'、'1.0'、'null' のような値、先頭が * や & の文字列、: を含む文字列などです。スタイルガイドですべての文字列に引用符が必要な場合は、常にシングルか常にダブルを選んでください。
YAML 1.1 と 1.2 の落とし穴
このコンバーターは現行仕様の YAML 1.2 に従います。多くの古いツール(PyYAML、Ruby の Psych、一部のバージョンの Kubernetes や Ansible)は今も YAML 1.1 として読み込み、ルールが異なります。
- ノルウェー問題:YAML 1.1 では
country: noがfalseを意味するため、ノルウェーの国コードNOが消えてしまいます。yes、on、off、y、nも同様です。YAML 1.2 で真偽値として扱われるのはtrueとfalseだけです。 - 8 進数:
0755は 1.1 では 8 進数ですが、1.2 ではただの 10 進数です(1.2 では0o755を使います)。安全のため、ファイルモードは引用符で囲みましょう。 - 60 進数:1.1 では
22:30が数値 1350 として解析されることがあります。時刻や"8080:80"のようなポートマッピングは引用符で囲みましょう。
JSON → YAML の変換では曖昧な文字列('no'、'on'、'y')を自動的に引用符で囲むため、生成される YAML はどちらのバージョンでも同じように読まれます。
よくある質問
変換で情報は失われませんか?
引用符が付く文字列と付かない文字列があるのはなぜですか?
'yes'、'123'、特殊文字を含む文字列にだけ引用符を付けます。それ以外は読みやすさのためにそのままにします。出力にコメントを追加できますか?
# comments を追加できます。