IT Market
Инструменты/Код/Документы/Конвертировать JSON в YAML онлайн бесплатно
JSON → YAML

Конвертируйте JSON в YAML формат

Коротко об инструменте

Конвертировать JSON в YAML онлайн бесплатно

YAML читают Docker Compose, Kubernetes, GitHub Actions и Ansible, а данные приходят почти всегда в JSON — из API или из экспорта настроек. Вставьте объект или массив в поле «JSON на входе», нажмите «Конвертировать» и получите тот же набор данных отступами, без фигурных скобок и кавычек вокруг ключей. Разбор выполняет js-yaml прямо во вкладке, поэтому в поле можно положить и рабочий конфиг. Смотрите также: вернуть YAML-конфиг в JSON, найти пропущенную запятую в исходном JSON, тот же объект в формате XML.

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

  1. Вставьте объект или массив в поле «JSON на входе». Синтаксис должен быть валидным: двойные кавычки у ключей, без висящих запятых.
  2. Нажмите «Конвертировать» — результат появится в поле «YAML на выходе» с отступом в два пробела.
  3. Проверьте вложенные объекты: они превращаются в блоки с отступом, а массивы — в строки, начинающиеся с дефиса.
  4. Нажмите «Копировать YAML», чтобы забрать текст в редактор, или «Скачать YAML» для готового файла .yaml.
  5. Если конвертация не запустилась, ищите ошибку в исходном JSON — парсер останавливается на первом же неверном символе.

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

Какой отступ будет в готовом YAML?

Два пробела на уровень вложенности — это значение по умолчанию в js-yaml и общепринятый стиль для docker-compose.yml и манифестов Kubernetes. Табуляция не используется вовсе: спецификация YAML её запрещает, поэтому конвертер её и не выдаст. Если в вашем проекте принят отступ в четыре пробела, поправьте результат уже в редакторе — здесь ширина отступа не настраивается.

Сохранится ли порядок ключей после конвертации?

Да. Объект JSON разбирается в том порядке, в котором ключи записаны, и в YAML они выводятся в той же последовательности. Исключение — числовые ключи вида "1", "2": движок JavaScript поднимает их в начало объекта, и в YAML они окажутся выше остальных. Если порядок критичен, замените такие ключи на строковые с префиксом.

Что произойдёт с русским текстом в значениях?

Кириллица переносится как есть, без экранирования в \u-последовательности — YAML работает в UTF-8. Строку возьмёт в кавычки, только если она начинается со спецсимвола, содержит двоеточие с пробелом или может быть прочитана как число либо как yes/no. Проверьте кодировку файла в редакторе: если он сохранён в windows-1251, кириллица в нём испортится уже после скачивания.

Можно ли вставлять большой JSON на несколько мегабайт?

Жёсткого лимита на размер нет, ограничение — память вкладки. Файлы до нескольких мегабайт конвертируются за доли секунды, но на десятках мегабайт вкладка заметно подвиснет на время разбора, особенно в мобильном браузере. Для дампов такого размера удобнее локальный yq или скрипт на Python.

Почему кнопка «Конвертировать» ничего не выводит?

Почти всегда причина в исходных данных: одинарные кавычки вместо двойных, запятая после последнего элемента, комментарий // внутри JSON или обрезанный при копировании хвост. JSON не допускает ничего из перечисленного. Откройте фрагмент в валидаторе JSON, исправьте первую же ошибку и вставьте текст заново.

Как обратно превратить YAML в JSON?

Для обратного направления есть отдельная страница «YAML в JSON»: она использует ту же библиотеку и даёт форматированный JSON. Обратный проход полезен для проверки — если после двух конвертаций структура совпала с исходной, значит при переводе в YAML ничего не потерялось.

Отправляется ли вставленный конфиг на сервер?

Нет. Разбор и вывод целиком выполняет скрипт js-yaml, загруженный в страницу; никаких запросов с содержимым поля страница не делает. Можно открыть вкладку «Сеть» в инструментах разработчика и убедиться, что после нажатия кнопки новых запросов не появляется.

Примеры

Настройки сервиса из API в docker-compose
До: {"image": "nginx:1.25", "ports": ["80:80", "443:443"], "environment": {"TZ": "Europe/Moscow"}}
После: image: nginx:1.25 ports: - '80:80' - '443:443' environment: TZ: Europe/Moscow
Массив объектов для шага workflow
До: [{"name": "build", "run": "npm ci"}, {"name": "test", "run": "npm test"}]
После: - name: build run: npm ci - name: test run: npm test