Конвертер 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: AliceCLI 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 добавляет: комментарии (#), многострочные строки (| и >), якоря и ссылки (& и *), гибкие типы даты/времени и строки без кавычек.
Когда использовать YAML вместо JSON?
YAML для: конфигураций CI/CD, Docker Compose, манифестов Kubernetes, файлов конфигурации, редактируемых человеком, многострочного текста. JSON для: обмена данными API (быстрее), строгих требований к типам, машинно-генерируемых данных.
Каковы правила отступов YAML?
YAML использует пробелы (никогда табуляцию) для отступов. Все ключи на одном уровне должны иметь одинаковый отступ. Стандарт — 2 или 4 пробела. YAML очень чувствителен к ошибкам отступов.
Как писать многострочные строки в YAML?
Два блочных стиля: буквальный блок (|) сохраняет переводы строк. Складной блок (>) заменяет одиночные переводы строк пробелами. Потоковые стили: одинарные кавычки (без обработки escape), двойные кавычки (с обработкой escape).
Как парсить YAML в Node.js?
Используйте библиотеку 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) Якоря (&) и псевдонимы (*) раскрываются в полные объекты. 3) Даты парсятся как объекты Date. 4) Очень большие целые числа могут терять точность.