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 для выбора оптимального формата
Как использовать
- Вставьте JSON в левый редактор, или загрузите файл .json/.txt, или нажмите «Пример» для загрузки образца
- Инструмент автоматически конвертирует в реальном времени согласно YAML 1.2, результат справа. Отступы переключаются в выпадающем меню
- При ошибках синтаксиса JSON появится кнопка «Исправить JSON» — нажмите для автоматического пакетного исправления
- При необходимости экранирования Unicode или строк используйте кнопки на нижней панели инструментов
- Скопируйте результат кнопкой «Копировать» или скачайте как 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 | Примечание |
|---|---|---|
| string | name: "Alice" | По умолчанию без кавычек, специальные символы требуют двойных кавычек |
| integer | port: 8080 | YAML автоматически распознаёт числовой тип, без кавычек |
| float | ratio: 3.14 | Числа с плавающей точкой аналогичны целым |
| boolean | enabled: true | Только строчные true/false, YAML 1.1 также поддерживает yes/no |
| null | value: null или ~ | YAML представляет пустое значение через null или тильду |
| array | - item1\n- item2 | Каждая строка начинается с - |
| object | key:\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
- yaml.orgОфициальная спецификация YAML 1.2
- yaml.orgОфициальный FAQ YAML
- WikipediaYAML — Wikipedia
- KubernetesОфициальный туториал Kubernetes YAML
- DockerОфициальная документация Docker Compose
- JSON Compress
- CSV в JSON
- JSON в CSV
- JSON Diff
- JSON Escape / Unescape
- Сглаживание JSON
- Форматтер JSON
- Генератор JSON
- JSONPath Запрос
- Объединение JSON
- Восстановление JSON
- Валидатор JSON Schema
- Сортировка JSON
- JSON Stringify
- JSON в HTML
- JSON в Java
- JSON в Markdown
- JSON в SQL
- JSON в TOML
- JSON в TypeScript
- XML в JSON
- Преобразовать JSON в XML
- YAML в JSON
- JSON → YAML Конвертер
- JSON в Go
- JSON в Rust
- JSON в Swift
- JSON в C#
- JSON в C++
- JSON в PHP
- JSON в Python