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

Файл не выбран
UTF-8, до 2 МБ. Файл можно перетащить на поле. Файл обрабатывается только в вашем браузере.
# Настройки сборки
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:

YAML
defaults: &defaults
  lang: ru
production:
  <<: *defaults
  minify: true
tags: [html, css]
JSON
{
  "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().