FormatArcかんたんデータ変換
JSONYAML変換Kubernetes

JSONをYAMLに変換する方法 — Kubernetes・Docker Compose対応

JSONファイルをYAML形式に変換する方法を解説。なぜYAMLに変換するのか、手動変換の面倒さ、FormatArcを使った変換手順、変換結果の読み方を紹介。

FormatArc JSON to YAML の変換結果

KubernetesのマニフェストやDocker Composeの設定ファイルはYAMLで書くのが標準的です。しかし、APIから取得したデータやツールの出力がJSON形式で返ってくることも多くあります。そんなときに必要になるのが、JSONからYAMLへの変換です。

この記事では、なぜYAMLに変換するのか、そして具体的な変換方法を解説します。

なぜ JSONを YAML に変換するのか

JSONとYAMLは構造的に互換性があり、どちらを使っても表現できる内容は同じです。それでもYAMLに変換する理由はいくつかあります。

Kubernetes / Docker Compose の設定

Kubernetesのマニフェストは YAML 形式が事実上の標準です。kubectl で JSON を直接扱うこともできますが、公式ドキュメントやコミュニティのサンプルはほぼすべてYAMLで書かれています。チームでの統一性を考えると、YAMLに合わせるのが自然です。

Docker Composeも同様に docker-compose.yml というYAMLファイルで構成を定義します。

可読性

YAMLは括弧やカンマを使わないぶん、人間にとって読みやすい形式です。設定ファイルのように頻繁に人が編集するものは、YAMLのほうが書きやすいと感じる開発者が多いです。

コメントの追加

JSONにはコメント構文がありません。YAMLに変換すれば、設定値の意図や注意点を # でコメントとして残せます。コードレビューや引き継ぎの際に役立ちます。

手動変換の面倒さ

小さなJSONであれば手で書き換えることもできます。

{
  "apiVersion": "v1",
  "kind": "Service",
  "metadata": {
    "name": "my-service"
  }
}

これをYAMLにすると、次のようになります。

apiVersion: v1
kind: Service
metadata:
  name: my-service

括弧を消してインデントに置き換え、キーのクォートを外します。この程度なら手作業でも問題ありません。

しかし、配列のネストが深くなったり、複数行の文字列が含まれていたりすると話は別です。100行を超えるJSONを手で変換するのは時間の無駄ですし、インデントのずれがYAMLの構文エラーに直結します。

FormatArc で変換する

JSON to YAML を使えば、ペーストして変換ボタンを押すだけで済みます。

  1. JSON to YAML を開く
  2. 左側のエディタにJSONを貼り付ける
  3. 「変換」ボタンを押す

JSON to YAML の変換結果

右側にYAMLの変換結果が表示されます。インデントは2スペースで出力されるので、Kubernetesのマニフェストにそのまま使えます。

処理はすべてブラウザ内で完結します。クラウドの認証情報やシークレットを含むJSONでも、外部にデータが送信されることはありません。

変換結果の読み方

FormatArcが出力するYAMLの基本的な読み方を確認しておきましょう。

  • オブジェクト({})はインデントで表現されます
  • 配列([])は各要素の先頭に - が付きます
  • 文字列はクォートなしで出力されます(特殊文字を含む場合はクォートが付きます)
  • nullnull のまま出力されます
  • 数値・真偽値もそのまま出力されます

たとえば、次のJSONを変換した場合を見てみましょう。

{
  "ports": [80, 443],
  "enabled": true,
  "comment": null
}

YAMLではこうなります。

ports:
  - 80
  - 443
enabled: true
comment: null

配列の要素がオブジェクトの場合は、- の後にキーが続く形になります。慣れると括弧だらけのJSONよりも見通しがよくなります。

まとめ

JSONからYAMLへの変換は、Kubernetesや Docker Compose を使う開発者にとっては日常的な作業です。手動変換はミスの元になるので、JSON to YAML でサッと変換してしまうのが効率的です。

YAMLとJSONの構文上の違いについてはYAMLとJSONの違いで詳しく解説しています。逆方向の変換が必要な場合はYAMLをJSONに変換する方法を参照してください。

関連ツール

JSON → YAML