YAML ↔ JSON 相互変換の方法(CLIコマンド・yq・JS実装)

YAML JSON DevOps Kubernetes

Kubernetes マニフェストや OpenAPI 仕様、GitHub Actions ワークフロー等の YAML 設定ファイルと JSON データの相互変換手法、構文差、および YAML↔JSON変換ツール での安全なブラウザ内処理です。


2. CLIでの変換(yq コマンド)

DevOpsの自動化パイプラインでは yq(Go製のYAML/JSONプロセッサ)が標準的に使われます。

# YAML を JSON に変換
yq eval -o=json config.yaml > config.json

# 1行に圧縮した JSON (Minified) として出力
yq eval -o=json -I=0 config.yaml > config.min.json

# JSON を YAML に変換
yq eval -P config.json > config.yaml

3. Node.js (JavaScript) での変換コード

npmの yaml パッケージを使用します。

npm install yaml
import fs from 'fs';
import YAML from 'yaml';

// YAML -> JSON 変換
const yamlText = fs.readFileSync('config.yaml', 'utf8');
const jsonObject = YAML.parse(yamlText);
fs.writeFileSync('config.json', JSON.stringify(jsonObject, null, 2));

// JSON -> YAML 変換
const jsonText = fs.readFileSync('data.json', 'utf8');
const yamlString = YAML.stringify(JSON.parse(jsonText));
fs.writeFileSync('data.yaml', yamlString);

4. 変換時の互換性と注意点

項目YAMLJSON変換時の影響
コメント# 注釈 が利用可能非対応YAML → JSON 変換時にコメントは消滅する
アンカー・エイリアス&anchor / *anchor で参照非対応JSON 変換時に参照先の値が全展開される
複数行文字列`(改行保持) />` (折り返し)\n エスケープのみ