Конвертер JSON - YAML: как перевести конфиг в другой формат и не потерять данные

Нужно перевести конфиг из JSON в YAML для docker-compose, Kubernetes или GitHub Actions. Или наоборот: сервис отдаёт YAML, а приложение ждёт JSON. Вручную переписывать структуру долго и чревато ошибками: один неверный отступ — и конфиг не парсится. Конвертер JSON - YAML переводит данные между форматами в обе стороны, определяет направление автоматически и показывает ошибки синтаксиса с номером строки и столбца.

В этой статье разберём, чем YAML отличается от JSON, что происходит с комментариями и якорями, как обрабатываются несколько документов и почему открывать чужой YAML безопасно.

Интерфейс онлайн-инструмента Конвертер JSON - YAML
Интерфейс онлайн-инструмента Конвертер JSON - YAML

Что умеет конвертер

Конвертер JSON - YAML принимает JSON или YAML и переводит его в другой формат.

Параметр Что делает
Открыть файл Загружает файл с компьютера
Направление «Определить автоматически» или явный выбор JSON → YAML / YAML → JSON
Отступ Сколько пробелов на уровень вложенности
Сортировать ключи по алфавиту Располагает ключи в алфавитном порядке
Преобразовать Выполняет перевод
Копировать / Скачать Копирует результат или сохраняет его файлом

Направление определяется автоматически: инструмент понимает, что перед ним, и переводит в противоположный формат. При ошибке синтаксиса показывается номер строки и столбца.

Всё выполняется в браузере: данные никуда не отправляются.

JSON и YAML: чем отличаются

Это два способа записать одни и те же данные. Разница — в синтаксисе и удобстве.

Свойство JSON YAML
Скобки {} и [] Отступы
Кавычки Обязательны для строк Часто не нужны
Комментарии Нет Есть
Читаемость для человека Средняя Высокая
Строгость Высокая Гибче, но чувствителен к отступам
Программная обработка Проще Сложнее из-за неоднозначностей

Важное отношение: любой JSON — это корректный YAML версии 1.2, но не наоборот. JSON — подмножество YAML по синтаксису. Поэтому JSON → YAML переводится без потерь, а YAML → JSON может потерять то, чего в JSON нет: комментарии, якоря, некоторые типы.

Где используется YAML

Инструмент Зачем YAML
docker-compose Описание сервисов, сетей, томов
Kubernetes Манифесты ресурсов
GitHub Actions Описание workflow
Ansible Плейбуки и конфигурации
Конфигурации CMS Настройки сайтов и плагинов
CI/CD Пайплайны и параметры сборки

JSON чаще встречается в API и обмене данными, YAML — в конфигурациях, которые читает и правит человек.

Комментарии и якоря: что теряется при переводе

Это важное ограничение, о котором стоит знать заранее.

Комментарии. В JSON комментариев нет. При переводе YAML → JSON они теряются. Если комментарии важны — сохраните исходный YAML отдельно.

Якоря и ссылки. YAML позволяет определить значение один раз и ссылаться на него: &якорь и *ссылка. В JSON такого механизма нет, поэтому при переводе якоря разворачиваются в обычные значения. Данные не теряются, но компактность записи — да.

Несколько документов. YAML поддерживает несколько документов в одном файле, разделённых ---. В JSON такого понятия нет. Инструмент превращает их в элементы одного массива и предупреждает об этом. Если документов несколько, результат будет массивом, а не объектом.

Безопасность: почему чужой YAML не опасен

YAML — мощный формат, и в некоторых реализациях он может быть опасен: поддерживаются пользовательские типы и даже выполнение кода. Инструмент этого не делает.

Риск Как обрабатывается
Пользовательские типы Не поддерживаются, разбираются только данные
Выполнение кода Не поддерживается
«YAML-бомба» Число значений ограничено, разбор идёт в отдельном потоке с ограничением времени
Схема Используется YAML 1.2

«YAML-бомба» — файл, в котором ссылки размножают данные до гигабайтов. Инструмент останавливает такой разбор: число значений ограничено, а разбор идёт в отдельном потоке с ограничением времени. Поэтому открывать чужой YAML безопасно.

Ошибки синтаксиса: строка и столбец

YAML чувствителен к отступам: лишний пробел или табуляция ломают структуру. Инструмент показывает номер строки и столбца, где встретилась ошибка.

Частые причины:

Ошибка Причина
Неверный отступ Смешаны пробелы и табуляция или разное число пробелов
Пропущенное двоеточие Ключ без :
Неверный уровень вложенности Элемент на один уровень глубже или выше
Спецсимвол в значении без кавычек : или # в значении ломают разбор
Незакрытая кавычка Строка начата, но не закрыта

При ошибке перейдите к указанной строке и столбцу — проблема почти всегда рядом.

Сортировка ключей и отступ

Сортировка ключей по алфавиту помогает сравнивать два файла: diff показывает только реальные изменения, а не перестановку полей.

Отступ влияет на читаемость YAML. Значение по умолчанию — 2 пробела. Для вложенных конфигов иногда удобнее 4, но 2 — стандарт де-факто.

Зачем конвертировать

Задача Что даёт конвертер
docker-compose Перевести JSON-конфиг в YAML для compose-файла
Kubernetes Подготовить манифест из JSON
GitHub Actions Перевести workflow из JSON в YAML
API Получить JSON из YAML-ответа
Сравнение конфигов Отсортировать ключи и сравнить
Миграция Перевести старый конфиг в новый формат

Ограничения инструмента

  • Комментарии теряются при YAML → JSON.
  • Якоря разворачиваются в обычные значения.
  • Несколько документов становятся массивом, а не набором объектов.
  • Только данные. Пользовательские типы и выполнение кода не поддерживаются — это защита, а не ограничение.

Как пользоваться: пошагово

  1. Вставьте JSON или YAML либо откройте файл.
  2. Оставьте направление «Определить автоматически» или выберите явно.
  3. Настройте отступ и сортировку ключей, если нужно.
  4. Нажмите «Преобразовать», затем скопируйте или скачайте результат.

Типичные ошибки

Ожидать, что комментарии сохранятся. В JSON их нет. Сохраните исходный YAML отдельно, если комментарии важны.

Удивляться, что якоря исчезли. В JSON нет якорей — они разворачиваются в значения. Данные не теряются, теряется компактность.

Забывать про несколько документов. Если в YAML было несколько документов через ---, в JSON получится массив, а не объект.

Путать конвертер с JSON Formatter. Formatter форматирует JSON, конвертер переводит между форматами. Для форматирования JSON — отдельный инструмент.

Игнорировать ошибку по строке и столбцу. YAML чувствителен к отступам. Смотрите участок вокруг указанной позиции.

Считать, что YAML → JSON без потерь. Потери есть: комментарии, якоря, множественные документы. Это свойство форматов, а не ошибка инструмента.

Вопросы и ответы

Чем YAML отличается от JSON? Это два способа записать одни и те же данные. JSON строже и проще для программ, YAML удобнее читать и править вручную: вместо скобок — отступы, есть комментарии. Любой JSON — это корректный YAML версии 1.2, но не наоборот.

Что будет с комментариями YAML? В JSON комментариев нет, поэтому при переводе YAML → JSON они теряются. Якоря и ссылки (&якорь, *ссылка) разворачиваются в обычные значения.

Файл содержит несколько документов через ---. Что получится? Если документов несколько, в JSON они станут элементами одного массива — инструмент предупредит об этом.

Безопасно ли открывать чужой YAML? Да. Разбираются только данные (схема YAML 1.2), пользовательские типы и выполнение кода не поддерживаются. «YAML-бомба» — файл, где ссылки размножают данные до гигабайтов, — останавливается: число значений ограничено, а разбор идёт в отдельном потоке с ограничением времени.

Можно ли конвертировать несколько файлов сразу? Инструмент работает с одним файлом или одним блоком данных за раз.

Почему YAML чувствителен к отступам? В YAML структура задаётся отступами, а не скобками. Лишний пробел или табуляция меняют уровень вложенности и ломают разбор.

Итог

Конвертер JSON - YAML — инструмент для перевода данных между JSON и YAML в обе стороны. Он определяет направление автоматически, показывает ошибки с номером строки и столбца, позволяет отсортировать ключи, выбрать отступ, открыть файл и скачать результат, а всё выполняется в браузере. Помните, что при YAML → JSON теряются комментарии и разворачиваются якоря, а несколько документов становятся массивом, — и конвертация пройдёт без сюрпризов.

Предыдущая запись

URL Encoder/Decoder: как закодировать текст для адреса и раскодировать строку

Онлайн-кодирование текста для вставки в адрес (процентное кодирование) и раскодирование строк вида %D0%BF%D1%80%D0%B8. Показывает части адреса и параметры. Опция кодирования адреса целиком (encodeURI).
Далее