JSON / YAML 変換/ JSON ↔ YAML

JSON と YAML の双方向リアルタイム変換 — 方向を即座に切り替え、カスタム JSON インデント対応。

JSON
YAML

このツールは役に立ちましたか?

コード例

JavaScript (js-yaml)
// npm install js-yaml
import yaml from 'js-yaml';

// JSON → YAML
const obj = { name: 'Alice', scores: [100, 95] };
const yamlStr = yaml.dump(obj, { indent: 2 });
// name: Alice
// scores:
//   - 100
//   - 95

// YAML → JSON
const yamlInput = `
name: Alice
scores:
  - 100
  - 95
`;
const parsed = yaml.load(yamlInput);
JSON.stringify(parsed, null, 2);
// { "name": "Alice", "scores": [100, 95] }
Python (PyYAML)
# pip install pyyaml
import yaml, json

# JSON → YAML
data = {"name": "Alice", "scores": [100, 95]}
yaml_str = yaml.dump(data, default_flow_style=False,
                      allow_unicode=True, indent=2)
# name: Alice
// scores:
// - 100
// - 95

# YAML → JSON
with open('config.yaml') as f:
    data = yaml.safe_load(f)  # use safe_load!
json_str = json.dumps(data, indent=2, ensure_ascii=False)

# Stream large files
for doc in yaml.safe_load_all(open('multi.yaml')):
    print(json.dumps(doc))
Go
// go get gopkg.in/yaml.v3
import (
  "encoding/json"
  "gopkg.in/yaml.v3"
)

// YAML → JSON
yamlStr := []byte("name: Alice\nage: 30")
var data map[string]interface{}
yaml.Unmarshal(yamlStr, &data)
jsonBytes, _ := json.MarshalIndent(data, "", "  ")

// JSON → YAML
jsonStr := []byte(`{"name":"Alice","age":30}`)
var obj interface{}
json.Unmarshal(jsonStr, &obj)
yamlBytes, _ := yaml.Marshal(obj)
// age: 30
// name: Alice
CLI Tools
# yq: YAML/JSON Swiss Army knife
# brew install yq  /  apt install yq

# YAML → JSON
yq -o=json config.yaml

# JSON → YAML
yq -P config.json

# In-place conversion
yq -i -o=yaml config.json

# Python one-liner: JSON → YAML
python3 -c "
import sys, json, yaml
print(yaml.dump(json.load(sys.stdin),
      default_flow_style=False, allow_unicode=True))
" < config.json

よくある質問

YAML と JSON の関係は?
YAML は JSON のスーパーセットです — 有効な JSON は有効な YAML でもあります。YAML は JSON にコメント(#)、複数行文字列、アンカーと参照、柔軟な日付/時刻型、引用符なし文字列を追加します。
YAML を JSON の代わりに使うべき状況は?
YAML を使う場面:CI/CD 設定、Docker Compose、Kubernetes マニフェスト、人間が編集・保守する設定ファイル、複数行テキストを含むコンテンツ。JSON を使う場面:API データ交換、厳密な型システムが必要な場合。
YAML のインデントルールは?
YAML はスペース(タブ禁止)でインデントし、階層関係を表現します。同じレベルのすべてのキーは同じインデント量を持つ必要があります。YAML はインデントエラーに非常に敏感です。
YAML の複数行文字列の書き方は?
2つのブロックスタイル:リテラルブロック(|)は改行を保持。フォールドブロック(>)は単一の改行をスペースに置換。フロースタイル:シングルクォート(エスケープ処理なし)、ダブルクォート(エスケープ処理あり)。
Node.js で YAML を解析するには?
js-yaml ライブラリを使用(npm install js-yaml):const yaml = require('js-yaml'); const obj = yaml.load(yamlString); const str = yaml.dump(obj);。セキュリティのため、yaml.safeLoad を使用することをお勧めします。
変換時の一般的な互換性問題は?
1)YAML のコメント(#)は JSON に変換できません。2)アンカー(&)とエイリアス(*)は JSON で完全なオブジェクトに展開されます。3)日付値は Date オブジェクトとして解析されます。4)整数は数値になり、非常に大きな整数は精度が失われる可能性があります。