Описание инструмента
О Конвертер JSON в YAML
Этот конвертер превращает JSON в YAML и YAML обратно в JSON, чтобы одна и та же конфигурация переезжала между телом запроса к API и манифестом Kubernetes, файлом Docker Compose, рабочим процессом GitHub Actions или документом OpenAPI без ручного перенабора.
Преобразование идёт по мере ввода, порядок ключей сохраняется ровно таким, каким вы его написали, а отступ можно задать в 2 или 4 пробела. Синтаксические ошибки сообщают точную строку и колонку.
Как перевести JSON to YAML
- Вставьте JSON в панель ввода. Результат в YAML появится сразу, никакую кнопку нажимать не нужно.
- Кнопкой направления переключитесь на YAML to JSON — например, чтобы скормить манифест скрипту, который читает только JSON.
- Выберите отступ в 2 или 4 пробела под стиль вашего репозитория. Файлы Kubernetes и GitHub Actions обычно используют 2.
- Если ввод некорректен, посмотрите указанные строку и колонку, поправьте это место — вывод обновится сам.
Когда это пригодится
- Превратить ресурс в JSON, выгруженный через kubectl, в читаемый манифест YAML, который не стыдно закоммитить.
- Перевести блок сервиса Docker Compose при отладке сгенерированной конфигурации.
- Перегнать спецификацию OpenAPI между формами JSON и YAML, потому что инструменты по обе стороны предпочитают разное.
- Переписать фрагмент рабочего процесса GitHub Actions, полученный в JSON, в тот YAML, которого ждёт раннер.
Правила YAML, о которые спотыкаются преобразования
YAML 1.2 почти надмножество JSON, поэтому корректный JSON обычно является корректным YAML. Сложности возникают в обратную сторону, где YAML угадывает типы, чего JSON не делает никогда.
- Проблема Норвегии: NO, no, yes, on и off парсеры YAML 1.1 читают как булевы значения, и код страны NO превращается в false. Такие значения берите в кавычки.
- Ведущие нули: значение вроде 010 может быть прочитано как восьмеричное число вместо строки. Заключайте в кавычки идентификаторы, почтовые индексы и артикулы.
- Номера версий: незакавыченное 1.10 становится числом 1.1, и завершающий ноль исчезает.
- Отступы делаются только пробелами, никогда табуляцией, а после каждого двоеточия, вводящего значение, нужен пробел.
Частые вопросы: JSON в YAML
- Меняет ли конвертер порядок моих ключей?
- Нет. Ключи выходят в том порядке, в котором вы их подали, и это удерживает различия в системе контроля версий компактными.
- Что происходит с комментариями?
- В JSON нет синтаксиса комментариев, поэтому при переводе JSON в YAML их неоткуда взять, а при обратном переводе имевшиеся комментарии отбрасываются. Если комментарии важны, сохраните оригинал.
- Будут ли в выводе якоря и алиасы?
- Нет. Повторяющиеся структуры выписываются целиком, чтобы результат прочитал любой парсер, даже без поддержки алиасов.
- Загружается ли моя конфигурация куда-либо?
- Нет. Разбор и преобразование выполняются в вашем браузере библиотекой js-yaml, поэтому вставленное вами не покидает машину и не сохраняется на wetool.site.
- Почему значение YAML меняет тип после преобразования?
- YAML угадывает типы незакавыченных скаляров. Возьмите значение в кавычки в исходном YAML — и оно преобразуется в строку JSON.
JSON в сравнении с YAML
JSON строг и однозначен, что делает его удобным форматом обмена, но в нём нет комментариев и он становится шумным при глубокой вложенности. YAML лучше читается на ревью — ценой угадывания типов и чувствительности к отступам. Большинство команд хранит конфигурацию в YAML и обменивается JSON на границах систем, и ровно для этого нужно двустороннее преобразование.
Чек-лист кавычек перед коммитом
Почти все сломанные из-за преобразования развёртывания начинаются со значения, потерявшего свой тип. Пробегитесь по выводу YAML и проверьте эти случаи.
- Коды стран и языков, особенно NO, и любое двухбуквенное значение, читающееся как слово.
- Числа, которые на самом деле идентификаторы: номера счетов, порты с дополняющими нулями, всё с ведущим нулём.
- Версии и теги образов вроде 1.10 или 3.20 — они теряют завершающий ноль, если их сочтут числами с плавающей точкой.