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

Вставьте YAML слева, получите JSON справа. Работает полностью в вашем браузере — без загрузки и регистрации.

  1. Вставьте свой YAML в текстовое поле слева.
  2. Нажмите «Преобразовать в JSON». Вывод появится справа.
  3. Скопируйте результат или нажмите «Скачать», чтобы сохранить как data.json.
  4. Если конвертация не удалась, сообщение об ошибке указывает на проблемную строку.
Что это делает?

Преобразует документы YAML 1.2 в эквивалентный JSON. Mapping становятся объектами, sequence — массивами, скаляры типизируются как числа, булевы, null или строки по правилам YAML. Anchor и alias разрешаются во время конвертации. Многодокументные потоки (разделённые `---`) уплощаются в массив документов.

Пример

Вход YAML:

name: Ada
tags:
  - math
  - logic
active: true

Выход JSON:

{
  "name": "Ada",
  "tags": [
    "math",
    "logic"
  ],
  "active": true
}

Типичные ошибки YAML и как их исправить

YAML чувствителен к пробелам, и это источник большинства сообщений «не удалось разобрать». Парсер указывает строку и столбец ошибки — вот шаблоны, на которые стоит смотреть.

  • Табы вместо пробелов. YAML 1.2 запрещает табы в отступах. Замените каждый таб пробелами — у большинства редакторов есть команда «преобразовать табы в пробелы».
  • Смешанные уровни отступов. Дочерний элемент с отступом 2 пробела под соседом с отступом 4 пробела вызовет ошибку. Выберите одну ширину отступа (обычно 2 пробела) и используйте её во всём документе.
  • Строки, выглядящие как булевы. В YAML 1.1 `yes`, `no`, `on`, `off` парсятся как булевы — неожиданно в кодах стран (ловушка «NO») и строках версий. Заключите значение в кавычки: `country: "NO"`. js-yaml по умолчанию использует YAML 1.2, где это исправлено, но реальные входы всё ещё попадают в проблему.
  • Спецсимволы без кавычек. Значения, начинающиеся с `- `, `:`, `?`, `&`, `*`, `!`, `|`, `>`, `\'`, `"`, `%`, `@`, `` ` ``, нужно брать в кавычки. Самый безопасный шаблон: заключайте в кавычки любую строку с пунктуацией.
  • Незакрытая кавычка. Пропущенная закрывающая `"` или `\'` заставляет парсер считать остаток файла частью строки до следующей кавычки — обычно выдаётся запутанный номер строки далеко от реальной ошибки.
  • Несовпадение anchor / alias. Alias (`*name`), ссылающийся на необъявленный anchor (`&name`), вызывает ошибку парсинга. Проверьте, что у каждого alias есть соответствующий anchor, объявленный ранее в документе.
Часто задаваемые вопросы

Поддерживает ли это причуды YAML 1.1, например «норвежскую проблему»?

Нет — и это специально. Мы используем js-yaml в режиме YAML 1.2, где `NO` без кавычек парсится как строка «NO», а не булева false. Если у вас входы, которые зависят от булевых YAML 1.1, заключайте их в кавычки явно перед вставкой. Смешение двух спецификаций в одном инструменте незаметно неправильно переводило бы ваши данные.

Что происходит с YAML anchor и alias?

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

Можно ли конвертировать многодокументные YAML-файлы?

Да. YAML-файлы с несколькими документами, разделёнными `---`, конвертируются в JSON-массив, где каждый документ становится одним элементом. Если файл — один документ, он конвертируется в один JSON-объект или значение на верхнем уровне.

Почему моя строка даты выходит в формате ISO?

У YAML есть нативный тип timestamp (`2025-12-31`). Парсер читает его как JavaScript Date, который сериализуется в JSON как строка ISO 8601. Чтобы сохранить исходный текст, заключите значение в кавычки в YAML: `release: "2025-12-31"`.

Безопасно ли для чувствительных YAML-конфигов?

Да. Всё работает в вашем браузере — ваш ввод парсится и конвертируется JavaScript на этой странице, не отправляется ни на какой сервер. Никаких логов, никакой аналитики над самим вводом, никакого хранения. Проверьте в DevTools браузера: ноль сетевых запросов при клике «Преобразовать».

Какого размера YAML-файл может обработать?

До предела памяти браузера, но текстовая область становится медленной выше ~10 МБ YAML. Для больших входов конвертируйте по частям или используйте ту же библиотеку (js-yaml) в командной строке.