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