Конвертер JSON ↔ YAML
JSONДвустороннее преобразование между JSON и YAML 1.2 с проверкой и указанием строки/столбца ошибки.
Удалённые URL не запрашиваются; вставьте JSON напрямую.
На этой странице
Что такое конвертер YAML / JSON?#
YAML и JSON — два способа записать одни и те же данные: вложенные отображения, списки, строки, числа, булевы значения и null. JSON строгий и перегруженный пунктуацией (каждая строка в двойных кавычках, скобки повсюду); YAML меняет эти кавычки и скобки на отступы и дефисы, что делает его достаточно читаемым, чтобы люди писали его руками для конфигов, CI-пайплайнов и манифестов контейнеров.
Между двумя форматами приходится переходить постоянно, потому что разные инструменты предпочитают разные форматы. Чарт Kubernetes пишут на YAML, а API говорит на JSON. CI-конфиг — YAML, а линтер, в который вы хотите его скормить, ждёт JSON. Коллега вставляет YAML-блок в чат, а вашему скрипту нужен JSON.parse. Делать это вручную — перенабирать отступы, перекавычивать, менять дефисы на скобки — та самая кропотливая работа, что и порождает лишнюю запятую или смещённый пробел, после чего ничего не парсится.
Эта страница конвертирует в обоих направлениях в вашем браузере. YAML в JSON, когда нужна машинно-ориентированная строгость; JSON в YAML, когда хочется конфиг, который человек действительно сможет прочитать. Разбор идёт по базовой схеме YAML 1.2 (без рискованного инстанцирования объектов), ошибки привязываются к точной строке и столбцу, а длинные строки не сворачиваются, поэтому вывод остаётся удобным для diff.
Как пользоваться#
- Выберите направление двухкнопочным переключателем в левом верхнем углу панели инструментов:
- YAML → JSON (по умолчанию): вставьте YAML слева, получите строгий JSON справа.
- JSON → YAML: вставьте JSON слева, получите YAML с отступами справа.
- Выберите Отступ — 2 или 4 пробела. Это управляет глубиной вложенности вывода в обоих направлениях.
- Нажмите Пример, чтобы загрузить короткий пример, если хотите увидеть поведение до вставки своих данных, или Очистить, чтобы стереть обе панели.
- Правая панель обновляется по мере выполнения конвертации. Строка состояния под ней сообщает одно из трёх: строку успеха с размером вывода в байтах, подсказку о пустом вводе или ошибку разбора с одномерными строкой и столбцом, указывающую на точный проблемный токен.
- Нажмите Копировать в заголовке вывода, чтобы забрать результат.
Конвертация запускается, как только ввод разбирается. Кнопки Создать нажимать не нужно — поправьте ввод, и вывод обновится.
Ключевые возможности#
- Двусторонне, одна пара панелей. Одна и та же раскладка ввод/вывод обслуживает оба направления; переключатель решает, какой парсер запускается.
- Базовая схема YAML 1.2.
null,true/false, целые, дробные и строки в кавычках разрешаются ровно так, как их разрешает стандартный парсер, а не свободная эвристика. - Свёртка строк отключена. Длинные строки вывода никогда не переносятся и не усекаются, поэтому diff с зафиксированным в репозитории файлом показывает только реальные изменения.
- Точное место ошибки. Смещённый отступ или лишний
:сообщается какстрока:столбец, а не как общее «не удалось разобрать». - Защита от глубины. Глубоко вложенный ввод (классическое YAML-расширение «billion-laughs») ограничен, поэтому враждебный или случайно рекурсивный файл не заморозит вкладку.
- Только локально. Ваш конфиг не покидает страницу — бэкенда для его отправки нет. Для ввода больше мегабайта тяжёлый разбор уходит в фоновый воркер, чтобы UI оставался отзывчивым.
Разбор примера#
Типичная реальная задача: конфиг сервиса на YAML нужно отправить в теле JSON-запроса. Вставьте это в левую панель с YAML → JSON и отступом 2:
name: api-gateway
port: 8080
replicas: 3
targets:
- host: example.com
port: 443
- host: cdn.example.com
port: 8443
features:
retries: true
timeout_ms: 2500
В правой панели получится строгий, готовый к разбору JSON:
{
"name": "api-gateway",
"port": 8080,
"replicas": 3,
"targets": [
{
"host": "example.com",
"port": 443
},
{
"host": "cdn.example.com",
"port": 8443
}
],
"features": {
"retries": true,
"timeout_ms": 2500
}
}
Заметьте, что значения YAML без кавычек 8080, true и 3 стали, соответственно, JSON-числом, булевым значением и числом — базовая схема типизировала их за вас. Поменяйте направление (JSON → YAML) и вставьте JSON обратно: получите ту же вложенную структуру, переформатированную отступами с дефисами для элементов списка, — ту форму, которую вы зафиксируете в конфиг-репозитории.
FAQ#
Сохраняются ли мои комментарии в YAML при обратном преобразовании?#
Нет. У JSON вообще нет синтаксиса комментариев, поэтому любой # comment в вашем YAML считывается и отбрасывается по пути в JSON — его просто некуда положить. Комментарии на входе допускаются (они никогда не вызывают ошибку), но пережить переход не могут. Если комментарии важны, держите YAML как источник истины и каждый раз генерируйте из него JSON.
Поддерживается ли много-документный YAML (файлы, разделённые ---)?#
Обрабатывается поток документов и возвращается первый документ. Большинство конфигов и манифестов однодокументные, поэтому это редко проблема; если у вас много-документный поток, разбейте его по разделителям --- и конвертируйте каждую часть.
YAML или JSON для моего конфига — что выбрать?#
Используйте YAML, когда человек редактирует его руками и вам нужна читаемость с комментариями, якорями и вложенностью через отступ. Используйте JSON, когда машина генерирует, а парсер потребляет, или когда важна строгость (в JSON ровно один допустимый способ записать каждое значение, поэтому не остаётся двусмысленностей для отладки). Этот инструмент существует именно для того, чтобы вам не приходилось выбирать что-то одно.
Ошибка пишет «строка 4, столбец 5», но эта строка выглядит нормально. Что не так?#
Почти всегда отступы. YAML определяет структуру по лидирующим пробелам, поэтому дочерний элемент, сдвинутый на один пробел левее или правее, — или смесь табуляции и пробелов — всплывает как ошибка на строке после настоящего виновника, потому что парсер замечает несоответствие только когда читает следующий токен. Сначала проверьте отступ строки выше указанной.