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

Конвертируйте YAML в JSON или JSON в YAML в реальном времени по мере ввода. Работает полностью в браузере, ничего из вставленного не загружается.

Конфигурационные файлы, переносимые

YAML часто встречается в Docker Compose, Kubernetes и конфигурациях CI.

YAML легче читать и редактировать людям, но большинство API и языков программирования ожидают JSON. Этот инструмент конвертирует между ними полностью в браузере, в обоих направлениях.

Что поддерживается

Блочные и потоковые отображения и последовательности, строки в кавычках и без них, числа, булевы значения, null и комментарии. Якоря/алиасы, многодокументные файлы и многострочные блочные скаляры (| / >) не поддерживаются.

Как это работает

YAML в JSON запускает небольшой рекурсивный нисходящий парсер, написанный специально для этой страницы. Сначала он удаляет комментарии (аккуратно, чтобы # внутри строки в кавычках сохранился), фиксирует отступ каждой строки, затем строит структуру так, как это определяет YAML: отступ открывает вложенные отображения, строки, начинающиеся с -, формируют последовательности, а всё остальное — скаляр. Скаляры типизируются по тем же правилам, что и в настоящих парсерах YAML: true/false становятся булевыми значениями, ~ и null становятся null, числа без кавычек становятся числами, строки в кавычках остаются строками, а встроенный потоковый синтаксис [a, b] или {k: v} тоже обрабатывается. Результат сериализуется через JSON.stringify с выбранным вами отступом. JSON в YAML — обратный процесс: JSON.parse проверяет ввод, затем эмиттер проходит по значению и записывает YAML с отступами, заключая в кавычки любую строку, которая иначе была бы неверно прочитана как число, булево значение или null.

Осознанное решение, о котором стоит знать: этот парсер трактует как булевы значения только буквальные true и false. Более старые парсеры YAML 1.1 также преобразуют yes, no, on и off, из-за чего код страны Норвегии NO печально известно превращается в false в конфигурационных файлах («проблема Норвегии»). Здесь он остаётся той строкой, какой и выглядит.

Это парсер подмножества, намеренно сделанный небольшим: якоря и алиасы (&/*), многодокументные файлы и блочные скаляры (| и >) не поддерживаются, поэтому сложный манифест Kubernetes, использующий эти возможности, не пройдёт конвертацию туда и обратно корректно. Для повседневной конвертации конфигураций он покрывает именно то, что вы реально вставляете.

Конвертация происходит полностью в вашей вкладке при каждом нажатии клавиши. Никакой сервис парсинга не вызывается: панель Network в DevTools остаётся безмолвной, пока вы печатаете, поэтому конфигурационные файлы, полные имён хостов и секретов, никогда не покидают ваш компьютер.