YAML ↔ JSON
Инструмент преобразует YAML в JSON и JSON в YAML, форматирует YAML и позволяет найти в нём ошибки: неверный отступ, табуляцию, повторяющийся ключ, незакрытую кавычку — место ошибки подчёркивается в тексте. Пригодится при работе с настройками CI (GitHub Actions, GitLab CI), Docker Compose, Kubernetes и описаниями API в OpenAPI.
Как пользоваться
Выберите действие и вставьте текст в поле слева или откройте файл. Результат обновляется сам во время ввода. При открытии файла .json включается «JSON → YAML», файла .yaml или .yml — «YAML → JSON». При ошибке место подчёркивается в поле, а кнопка «К ошибке» переводит к нему курсор.
«Форматировать YAML» выравнивает отступы и пробелы, сохраняя комментарии, якоря, порядок ключей и запись чисел. Это же действие подходит для проверки: если YAML некорректен, появится сообщение об ошибке.
Код обрабатывается в браузере, не отправляется на сервер и не сохраняется после закрытия страницы. Размер — до 2 МБ в UTF-8. Длительную обработку можно остановить кнопкой «Отменить обработку».
Для вашего удобства рекомендую использовать полноэкранный режим.
YAML
# Настройки сборки name: basicweb version: 2 # Большое число и запись 1.50 сохраняются как в исходнике id: 9007199254740993 ratio: 1.50 features: - search - "yes" defaults: &defaults lang: ru theme: auto production: <<: *defaults minify: true description: | Многострочный текст сохраняет переносы.
JSON
Для преобразования включите JavaScript. Пример: YAML tags: [html, css] соответствует JSON {"tags": ["html", "css"]}.
Как выполняется преобразование
- Числа переносятся в той записи, в которой они даны:
9007199254740993и1.50не округляются. Шестнадцатеричные и восьмеричные числа YAML (0x1F,0o17) записываются в JSON десятичными. - Ссылки на якоря (
*defaults) и слияние ключей (<<: *defaults) разворачиваются: в JSON нет ссылок, поэтому данные повторяются. Ключи, заданные в самом объекте, важнее подставленных. - Несколько документов в одном файле, разделённых строкой
---, собираются в массив JSON. - Комментарии YAML в JSON не переносятся: в JSON их нет. При форматировании YAML комментарии сохраняются.
- В JSON → YAML строки, похожие на числа или логические значения (
"123","yes","no"), остаются в кавычках, а многострочные записываются блоком|.
YAML и соответствующий JSON:
defaults: &defaults
lang: ru
production:
<<: *defaults
minify: true
tags: [html, css]{
"defaults": { "lang": "ru" },
"production": { "lang": "ru", "minify": true },
"tags": ["html", "css"]
}Частые ошибки YAML
- Табуляция в отступе. YAML допускает только пробелы. Если редактор вставляет табуляцию, настройте замену на пробелы.
- Разные отступы у соседних элементов. Ключи одного объекта и элементы одного списка должны начинаться с одной колонки.
- Нет пробела после двоеточия.
key:value— это одна строка, а не пара ключ–значение; нужноkey: value. - Двоеточие или
#внутри значения. Строкуtitle: Шаг 1: установказаключите в кавычки, иначе второе двоеточие сломает разбор, а#после пробела начнёт комментарий. - Повторяющийся ключ. В одном объекте ключ может встречаться один раз; разные библиотеки по-разному выбирают, какое значение оставить, поэтому инструмент считает повтор ошибкой.
Что не переносится в JSON
Значения .inf и .nan (бесконечность и «не число»), а также объекты и массивы в роли ключа не имеют записи в JSON — инструмент сообщит об этом с указанием места. Якорь, который ссылается сам на себя, и цепочки ссылок, разворачивающиеся в огромный документ, тоже останавливают преобразование. Даты вроде 2026-10-17 остаются строками: так их читает YAML 1.2.
Вопросы и ответы
Почему yes и no в кавычках?
По YAML 1.2 это обычные строки, но многие библиотеки, работающие по старой версии 1.1, читают yes, no, on и off как true и false. Кавычки гарантируют, что строка останется строкой в любой программе.
JSON — это тоже YAML?
Почти: синтаксис JSON входит в YAML 1.2, поэтому «YAML → JSON» примет и JSON. Обратное неверно — отступы, комментарии и якоря есть только в YAML.
Безопасно ли вставлять конфигурацию с паролями?
Текст обрабатывается в вашем браузере и не отправляется на сервер. Но лучше не хранить секреты в файлах конфигурации: используйте переменные окружения или хранилище секретов.
Изучить JSON
Синтаксис JSON и работа с ним в JavaScript описаны в статьях об объекте JSON и методах JSON.parse() и JSON.stringify().