Конвертация YAML в JSON преобразует данные, записанные в формате YAML (YAML Ain't Markup Language), в формат JSON (JavaScript Object Notation). Оба формата представляют структурированные данные в виде пар ключ-значение, последовательностей и вложенных объектов, но различаются синтаксисом. YAML использует отступы и минимальную пунктуацию, тогда как JSON требует фигурных скобок, квадратных скобок и обязательного заключения строк в кавычки. Конвертация между этими форматами — распространённая задача при переносе конфигурационных данных между системами, ожидающими разные форматы.
YAML разработан для удобочитаемости. Он поддерживает комментарии, многострочные строки, якоря и псевдонимы — ни одна из этих возможностей не существует в JSON. При конвертации YAML в JSON эти специфические возможности YAML разрешаются: якоря раскрываются на месте, комментарии отбрасываются, а многострочные блоки превращаются в экранированные строки. На выходе получается валидный JSON, который может прочитать любой JSON-парсер.
Спецификация YAML 1.2 явно определяет JSON как подмножество YAML — это означает, что каждый валидный JSON-документ является одновременно валидным YAML. Обратное неверно. Документы YAML, использующие комментарии, якоря или сложные ключи, не имеют прямого эквивалента в JSON и должны быть упрощены при конвертации. Этот инструмент выполняет конвертацию автоматически, создавая чистый, корректно отформатированный JSON из любого валидного YAML-ввода.
Конвертация YAML в JSON вручную чревата ошибками, особенно при глубоко вложенных структурах или многострочных значениях. Браузерный конвертер выдаёт результат мгновенно и обнаруживает синтаксические ошибки YAML ещё до того, как они попадут в приложение.
⚡
Мгновенная конвертация в браузере
Вставьте YAML и получите отформатированный JSON за миллисекунды. Никаких CLI-инструментов для установки, шагов сборки и зависимостей для управления.
🔀
Поддержка любой валидной структуры YAML
Поддерживаются вложенные словари, последовательности, многострочные строки (блоки literal и folded), якоря, псевдонимы, ключи слияния и все скалярные типы YAML 1.2.
🔒
Данные остаются приватными
Весь разбор выполняется локально в браузере с помощью JavaScript. Содержимое YAML никогда не отправляется на сервер, что делает инструмент безопасным для конфигурационных файлов с учётными данными или внутренними путями.
📋
Копирование и настройка формата вывода
Переключайтесь между отступом в 2 и 4 пробела. Скопируйте результат JSON в буфер обмена одним кликом для прямого использования в коде, API-запросах или конфигурационных файлах.
Сценарии использования YAML в JSON
Фронтенд-разработка
Конвертируйте YAML-конфигурации из дизайн-системы или CMS в JSON для обработки JavaScript-сборщиками, REST API или библиотеками i18n, которые требуют JSON на входе.
Бэкенд-разработка
Преобразуйте application.yml Spring Boot или database.yml Rails в JSON для передачи в скрипты развёртывания, API-шлюзы или сервисы, принимающие только JSON-конфигурацию.
DevOps и CI/CD
Конвертируйте docker-compose.yml, рабочие процессы GitHub Actions или манифесты Kubernetes в JSON для инструментов валидации, политических движков вроде OPA или отладки с помощью jq.
QA и тестирование
Преобразуйте YAML-фикстуры тестов в JSON-нагрузки для инструментов API-тестирования — Postman, Insomnia или автоматизированных тестовых наборов, ожидающих тела запросов в JSON.
Инженерия данных
Конвертируйте определения пайплайнов в формате YAML (Airflow, dbt, Dagster) в JSON для валидации схем, программной обработки или интеграции с каталогами метаданных.
Обучение и документация
Быстро посмотрите, как структуры YAML соотносятся с их JSON-эквивалентами при изучении форматов конфигурации или написании документации.
Справочник соответствия типов YAML и JSON
Каждый тип данных YAML при конвертации соответствует определённому типу JSON. В таблице ниже показаны конструкции YAML и соответствующий им JSON-вывод. Понимание этих соответствий поможет предсказать, как данные YAML будут выглядеть после конвертации, и избежать неожиданностей с такими типами, как булевы значения или null.
Тип YAML
Синтаксис YAML
Вывод JSON
Mapping
name: Alice
{ "name": "Alice" }
Sequence
- apple\n- banana
["apple", "banana"]
String
greeting: hello world
"hello world"
Integer
count: 42
42
Float
ratio: 3.14
3.14
Boolean
active: true
true
Null
value: null
null
Multiline (|)
bio: |\n Line one\n Line two
"Line one\nLine two\n"
Folded (>)
note: >\n A long\n paragraph
"A long paragraph\n"
Anchor/Alias
&default\n <<: *default
Resolved inline (no $ref)
Синтаксис YAML и JSON
YAML и JSON представляют одну и ту же модель данных, но с разными правилами синтаксиса. Различия ниже объясняют, почему некоторые возможности YAML — например, комментарии и якоря — не имеют эквивалента в JSON.
YAML
Использует отступы для вложенности (без фигурных скобок). Поддерживает комментарии через #. Строки обычно не требуют кавычек. Допускает многострочные значения с блочными скалярами | (literal) и > (folded). Поддерживает якоря (&name) и псевдонимы (*name) для повторного использования. В YAML 1.2 только true и false распознаются как булевы значения; старые парсеры YAML 1.1 также принимали yes, no, on и off, но в YAML 1.2 они трактуются как обычные строки.
JSON
Использует фигурные и квадратные скобки для вложенности. Синтаксис комментариев отсутствует. Все строки должны быть заключены в двойные кавычки. Многострочные строковые литералы отсутствуют — вместо них используются escape-последовательности \n. Механизм якорей и псевдонимов отсутствует. Булевы значения строго в нижнем регистре: true и false. Все ключи должны быть строками в кавычках. Конечные запятые недопустимы.
Примеры кода
Ниже приведены рабочие примеры программной конвертации YAML в JSON. Каждый пример разбирает строку YAML и выводит отформатированный JSON.
# Convert a YAML file to JSON with yq
yq -o=json config.yaml > config.json
# Pipe YAML into yq for one-off conversion
echo "name: demo" | yq -o=json
# → { "name": "demo" }
# Python one-liner (no extra install on most systems)
python3 -c "import yaml, json, sys; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < config.yaml
Часто задаваемые вопросы
Является ли YAML надмножеством JSON?
Да, начиная с YAML 1.2 (опубликован в 2009 году). Каждый валидный JSON-документ является также валидным YAML. Спецификация YAML была намеренно обновлена для обеспечения полной совместимости с JSON. Обратное неверно — возможности YAML, такие как комментарии, якоря и ключи без кавычек, не имеют эквивалента в JSON.
Что происходит с комментариями YAML при конвертации?
Комментарии отбрасываются. В JSON нет синтаксиса комментариев, поэтому все строки, начинающиеся с # в YAML-вводе, теряются при конвертации. Если нужно сохранить комментарии, оставьте исходный YAML-файл в качестве источника истины и генерируйте из него JSON по мере необходимости.
Как обрабатываются якоря и псевдонимы YAML?
Якоря (&name) и псевдонимы (*name) разрешаются при разборе. Псевдоним заменяется полной копией данных, на которые указывает якорь. Итоговый JSON не содержит ссылок — все значения раскрыты на месте. Ключи слияния (<<: *name) разрешаются аналогичным образом.
Может ли конвертация YAML в JSON привести к потере данных?
Для значений данных — нет. Все скалярные типы YAML (строки, числа, булевы значения, null) имеют прямые эквиваленты в JSON. Что теряется: комментарии, директивы тегов, имена якорей и различие между блочным и потоковым стилем. Если YAML использует пользовательские теги (!!python/object, !!timestamp), они приводятся к простым значениям или могут вызвать ошибку разбора — в зависимости от парсера.
Почему булево значение 'yes' в YAML становится строкой в JSON?
Этот инструмент использует js-yaml v4, который следует правилам разрешения булевых значений YAML 1.2. Только true и false (в любом регистре) распознаются как булевы значения. Значения yes, no, on и off обрабатываются как обычные строки и появляются в JSON-выводе в кавычках. Если вместо ожидаемых булевых значений вы видите строки, замените их на true или false в исходном YAML.
Каков максимальный размер YAML-файла, поддерживаемый этим инструментом?
Инструмент работает в браузере, поэтому ограничение зависит от доступной памяти устройства. На практике файлы размером до нескольких мегабайт конвертируются без проблем. Для очень больших файлов (50 МБ и более) CLI-инструмент вроде yq или Python-скрипт с PyYAML будет надёжнее, так как они могут обрабатывать данные потоково, а не загружать всё в память сразу.
Как многострочные строки YAML конвертируются в JSON?
В YAML есть два стиля многострочных блочных скаляров. Блоки literal (|) сохраняют переносы строк как символы \n в строке JSON. Блоки folded (>) заменяют одиночные переносы строк пробелами, превращая несколько строк в один абзац. Оба стиля по умолчанию добавляют завершающий перенос строки, который можно убрать с помощью индикатора отсечения (|- или >-).