JSON → YAML Конвертер

Бесплатный онлайн JSON→YAML конвертер. Преобразование JSON в YAML 1.2 одним кликом, настраиваемые отступы, автоисправление ошибок синтаксиса JSON, генерация YAML-конфигураций Kubernetes, Docker Compose, GitHub Actions. Вся обработка выполняется локально в браузере.

Похожие

Что такое YAML? Зачем конвертировать JSON в YAML?

YAML (YAML Ain't Markup Language — «YAML — не язык разметки») — человекочитаемый формат сериализации данных, разработанный для того, чтобы конфигурационные файлы было легко читать и писать. YAML 1.2 — текущая стабильная версия, предложенная Кларком Эвансом в 2001 году. Сегодня YAML широко используется в настройках практически всех основных DevOps-инструментов: Kubernetes, Docker Compose, GitHub Actions, Ansible, CircleCI, Prometheus. Философия дизайна YAML ставит читаемость выше краткости, поэтому вместо компактного машинного синтаксиса JSON используется интуитивная человеку структура отступов с комментариями.

JSON и YAML находятся в отношении надмножества (JSON — подмножество YAML). Конвертация технически проста, но имеет огромное практическое значение: ① повышение читаемости — YAML использует отступы вместо фигурных скобок и запятых; ② поддержка комментариев — YAML поддерживает # комментарии; ③ поддержка нескольких документов — YAML поддерживает разделитель ---; ④ автоматическое распознавание типов — YAML распознает числа, булевы значения и null без кавычек.

YAML имеет три базовые структуры данных: ① скаляр (scalar) — одиночное значение; ② последовательность (sequence) — эквивалент массива JSON, обозначается через -; ③ отображение (mapping) — эквивалент объекта JSON, обозначается key: value. Также поддерживаются расширенные структуры: якоря и ссылки (&anchor/*anchor), блочный стиль (|) и свернутый стиль (>).

Типичные мотивы конвертации: ① нужен деплой в Kubernetes, но конфигурация в JSON; ② команда решила унифицировать все конфигурации на YAML; ③ сторонние API требуют YAML (OpenAPI, Swagger); ④ экспортированные JSON-конфигурации нужно сделать читаемыми; ⑤ мок-данные в JSON нужно преобразовать для тестовых фикстур.

Процесс конвертации — это переотображение структуры данных: JSON.parse() разбирает текст в AST, функция dump() из js-yaml рекурсивно обходит узлы. Весь процесс выполняется чисто локально, результат на 100% совместим со стандартными YAML-парсерами.

Варианты использования

  • Создание манифестов Kubernetes: конвертация JSON из Helm-шаблонов и CI/CD в стандартный Deployment/Service YAML
  • Конфигурация Docker Compose: конвертация JSON из контейнерных платформ в читаемый docker-compose.yml
  • GitHub Actions / GitLab CI: конвертация JSON из скриптов автоматизации в YAML-пайплайны
  • Создание Ansible Playbook: конвертация JSON оркестрации задач в формат Ansible
  • Унификация конфигураций микросервисов: миграция JSON-конфигураций в YAML-репозиторий
  • Генерация YAML из Swagger/OpenAPI: конвертация JSON Schema в стандартную спецификацию OpenAPI YAML
  • Изучение синтаксиса YAML: наглядное наблюдение преобразования структур
  • Сравнение форматов: быстрая конвертация между JSON и YAML для выбора оптимального формата

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

  1. Вставьте JSON в левый редактор, или загрузите файл .json/.txt, или нажмите «Пример» для загрузки образца
  2. Инструмент автоматически конвертирует в реальном времени согласно YAML 1.2, результат справа. Отступы переключаются в выпадающем меню
  3. При ошибках синтаксиса JSON появится кнопка «Исправить JSON» — нажмите для автоматического пакетного исправления
  4. При необходимости экранирования Unicode или строк используйте кнопки на нижней панели инструментов
  5. Скопируйте результат кнопкой «Копировать» или скачайте как output.yaml

Функции

  • YAML 1.2 стандартный вывод: строгое соответствие спецификации YAML 1.2, прямое использование в Kubernetes, Docker Compose, GitHub Actions, Ansible
  • Настраиваемые отступы: переключение 2/4 пробела под стиль кодирования проекта (YAML рекомендует 2 пробела)
  • Автоисправление JSON: встроенный движок tryFixJSON автоматически обнаруживает и исправляет висячие запятые, одинарные кавычки и комментарии перед конвертацией
  • Двусторонняя конвертация Unicode: один клик для экранирования/деэкранирования \uXXXX, поддержка международных проектов
  • Экранирование/деэкранирование строк: добавление или снятие экранирования кавычек, обратных слешей и переносов строк
  • Форматирование и сжатие JSON: форматирование с отступами или сжатие в одну строку в левой панели
  • Двустороннее редактирование в реальном времени: вставка JSON слева мгновенно отображает YAML справа без нажатия кнопок
  • Загрузка и скачивание файлов: поддержка .json/.txt, скачивание как config.yaml или output.yaml одним кликом
  • Горячие клавиши: Shift+Cmd/Ctrl+F форматирование, C сжатие, U Unicode, Z де-unicode, / экранирование, . деэкранирование, O загрузка, D скачивание, K очистка
  • Перетаскиваемые панели и история: регулируемая ширина панелей, автосохранение последних 200 записей
  • Переход к форматтеру JSON: после конвертации один клик для перехода в форматтер JSON
  • Полностью локальная обработка: весь парсинг и конвертация выполняются в JavaScript браузера, конфиденциальные данные не загружаются

Часто задаваемые вопросы

Как конвертировать JSON в формат YAML?

Вставьте JSON в левый редактор — инструмент автоматически преобразует его в читаемый формат согласно YAML 1.2. Пары ключ-значение станут key: value, вложенные объекты — иерархией отступов, массивы — синтаксисом `- элемент`. После конвертации можно скопировать или скачать как .yaml. При ошибках синтаксиса JSON инструмент попытается исправить их автоматически.

Для каких сценариев подходят YAML и JSON?

YAML — для читаемых человеком конфигураций (Kubernetes, Docker Compose, GitHub Actions, Ansible, CI/CD). JSON — для машинного парсинга и обмена данными (REST API, микросервисы). Конфигурации — YAML, передача данных — JSON. Инструмент также поддерживает обратную конвертацию YAML→JSON.

Какие отступы лучше — 2 или 4 пробела?

YAML официально рекомендует 2 пробела (стиль Python). Это стандарт по умолчанию для Kubernetes, Docker Compose, GitHub Actions. Некоторые проекты используют 4 пробела. Инструмент позволяет свободно переключаться без повторной конвертации.

Можно ли использовать сгенерированный YAML напрямую в Kubernetes?

Да. Инструмент строго следует спецификации YAML 1.2, вывод соответствует требованиям синтаксиса Kubernetes (kubectl apply). Сохраните как deployment.yaml или service.yaml и примените через kubectl apply -f. YAML чувствителен к отступам — не добавляйте лишние пробелы или табуляции при копировании.

Поддерживается ли генерация multi-document YAML (с разделителем ---)?

Текущая версия ориентирована на конвертацию одного документа. Если JSON — массив независимых объектов, вывод будет в формате списка. Для multi-document YAML добавьте разделители --- вручную после конвертации или используйте YAML-форматтер.

Искажаются ли китайские/специальные символы в JSON?

Нет. Инструмент полностью поддерживает UTF-8, включая все символы Unicode. Для конвертации в формат \uXXXX используйте кнопку «Unicode», для обратного — «Де-Unicode».

Как обрабатываются кавычки и переносы строк в JSON?

YAML поддерживает несколько стилей строк: без кавычек, двойные кавычки (с escape-последовательностями), одинарные кавычки (литералы), блочный стиль | (с сохранением переносов), свернутый стиль > (переносы в пробелы). Инструмент по умолчанию выводит двойные кавычки.

Становятся ли все значения строками после конвертации?

По умолчанию инструмент сохраняет исходные типы JSON: числа как числа YAML, булевы как true/false, null как null или ~. Чтобы принудительно преобразовать всё в строки, оберните значения в кавычки в исходном JSON.

Загружаются ли конфигурации на сервер при локальной конвертации?

Нет. Весь парсинг JSON, генерация YAML, экранирование строк и конвертация Unicode выполняются локально в JavaScript-движке браузера. Данные не передаются по сети. Работает офлайн. Безопасно для конфиденциальных данных.

Устранение неполадок

Ошибка «Unexpected token» в JSON — что делать?

Это ошибка синтаксиса JSON. Частые причины: ① висячая запятая в конце ({"a":1,}); ② одинарные кавычки вместо двойных; ③ ключи без кавычек; ④ комментарии // или /* */. Нажмите кнопку «Исправить JSON» — инструмент автоматически попытается дополнить запятые, добавить кавычки и удалить комментарии. После исправления повторите конвертацию.

kubectl apply выдаёт «yaml: invalid character»?

Обычно это ошибка отступов. YAML требует строго пробельных отступов, смешивание с табуляцией вызывает сбой. Проверьте: ① все отступы — пробелы; ② количество пробелов одинаково на одном уровне; ③ отступы соответствуют уровню вложенности. Вывод инструмента использует только пробелы.

Переносы строк в YAML превратились в \n — что делать?

По умолчанию \n в JSON экранируется как \n в YAML. Для сохранения реальных переносов (многострочные команды Docker Compose) измените стиль на блочный (|) вручную или используйте кнопку «Деэкранирование» для преобразования \n в реальные переносы перед повторной конвертацией.

null превратился в символ ~ — это нормально?

YAML использует ~ или null для пустых значений, оба варианта эквивалентны. Если инструмент не распознаёт ~, замените вручную на null. Внимание: YAML 1.1 интерпретирует NO/On/Off как булево false (норвежская проблема), YAML 1.2 это исправляет.

Китайские символы отображаются как \uXXXX?

По умолчанию инструмент выводит нативный UTF-8. Если появился формат \uXXXX: ① исходный JSON уже был в Unicode-escape; ② была нажата кнопка «Unicode». Используйте «Де-Unicode» для обратного преобразования.

Браузер зависает при конвертации больших файлов?

Реализована оптимизация с задержкой 500 мс, но очень большие файлы (>1 МБ) могут создавать нагрузку. Рекомендации: ① проверьте валидность JSON через форматтер; ② убедитесь, что это один JSON, а не склеенные; ③ для файлов >10 МБ используйте yq или kubectl convert; ④ закройте лишние вкладки для освобождения памяти.

Глоссарий

YAML
YAML Ain't Markup Language (рекурсивный акроним), человекочитаемый формат сериализации данных. Де-факто стандартный язык конфигурации для DevOps-инструментов.
Отступ (Indentation)
YAML выражает иерархию через отступы (только пробелы, без табуляции). Ошибки отступов — самая частая проблема YAML.
Последовательность (Sequence)
Представление массива в YAML, каждый элемент обозначается - элемент, эквивалент массива JSON.
Отображение (Mapping)
Представление объекта в YAML, пары ключ-значение обозначаются key: value, эквивалент объекта JSON.
Блочный стиль (Block Scalar |)
Многострочная запись в YAML, идентификатор |, сохраняет все переносы строк и отступы, эквивалент heredoc.
Свернутый стиль (Folded Scalar >)
Многострочная запись в YAML, идентификатор >, одиночные переносы заменяются пробелами, двойные — разделители абзацев.
Якоря и ссылки (Anchor & Reference)
YAML позволяет определять якорь через &name и ссылаться через *name, избегая дублирования.
YAML 1.2
Текущая стабильная версия спецификации YAML (опубликована в 2009, минорная ревизия в 2021). Инструмент соответствует версии 1.2.2.
Multi-document YAML
YAML поддерживает несколько документов в одном файле, разделённых ---. В Kubernetes один .yaml может содержать Deployment, Service, ConfigMap.
Kubernetes YAML
YAML-формат манифестов Kubernetes, содержит четыре обязательных поля: apiVersion, kind, metadata, spec.
Норвежская проблема (YAML 1.1)
Спецификация YAML 1.1 интерпретировала NO/On/Off как булево false, вызывая ошибки с названиями стран. Исправлено в YAML 1.2.
Docker Compose
Конфигурационный файл Docker для оркестрации нескольких контейнеров в формате YAML.

Таблица соответствия типов JSON и представления YAML

Инструмент конвертирует типы JSON в YAML по следующим правилам:

Тип JSONПредставление YAMLПримечание
stringname: "Alice"По умолчанию без кавычек, специальные символы требуют двойных кавычек
integerport: 8080YAML автоматически распознаёт числовой тип, без кавычек
floatratio: 3.14Числа с плавающей точкой аналогичны целым
booleanenabled: trueТолько строчные true/false, YAML 1.1 также поддерживает yes/no
nullvalue: null или ~YAML представляет пустое значение через null или тильду
array- item1\n- item2Каждая строка начинается с -
objectkey:\n sub: valueОбъект через key: value, вложенность через отступ
object array- name: a\n- name: bМассив объектов: - с последующей парой ключ-значение

Сравнение стилей строк YAML

YAML поддерживает 6 способов записи строк:

СтильПример синтаксисаСценарий применения
Без кавычекname: AliceПростые строки, наиболее часто
Двойные кавычкиname: "Alice"Специальные символы, поддержка \n
Одинарные кавычкиname: 'Alice'Литеральные строки, без экранирования
Блочный стильbio: |\n line1\n line2Сохранение всех переносов и отступов
Свёрнутый стильbio: >\n line1\n line2Одиночные переносы в пробелы, двойные — абзацы
Явный тегvalue: !!str 123Принудительное указание типа

Примеры конвертации JSON→YAML

Соответствие сложных структур JSON и вывода YAML:

СтруктураПример
JSON ввод{"name": "app", "port": 8080}
YAML выводname: app port: 8080
JSON ввод{"server": {"host": "0.0.0.0", "port": 443}}
YAML выводserver: host: 0.0.0.0 port: 443
JSON ввод{"hosts": [{"ip": "10.0.0.1"}, {"ip": "10.0.0.2"}]}
YAML выводhosts: - ip: 10.0.0.1 - ip: 10.0.0.2
JSON ввод{"spec": {"replicas": 3, "image": "nginx:1.25"}}
YAML выводspec: replicas: 3 image: nginx:1.25

Privacy & Security

Весь парсинг JSON, генерация YAML, экранирование строк, конвертация Unicode, автоисправление JSON и чтение файлов выполняются локально в JavaScript-движке браузера. Содержимое JSON и сгенерированные YAML-конфигурации не передаются по сети на сервер, не записываются и не анализируются. Конфиденциальные JSON с паролями БД, API-ключами и Kubernetes Secrets можно безопасно конвертировать. Локальная история хранится только в localStorage браузера и удаляется при закрытии браузера или очистке кэша.

Authoritative References