Конвертировать YAML в JSON и обратно
Один инструмент для обоих направлений: формат определяется по файлу, поддерживается многодокументный YAML, а каждая ошибка указывает строку.
Перетащите файлы сюда
.yaml, .yml, .json, .txt · до 300 МБ
Больше настроекМеньше настроек
Как конвертировать YAML в JSON и обратно
- 1
Перетащите файл YAML или JSON
Добавьте один файл или до двадцати. Расширения .yaml, .yml и .json распознаются, и в пакетной обработке их можно свободно смешивать.
- 2
Проверьте направление
Направление выбирается по расширению или по содержимому для простого текста. Переопределите его, если автоматический выбор не совпадает с тем, что вы хотели.
- 3
Конвертируйте и скачайте
Нажмите кнопку и сохраните конвертированный файл. Несколько файлов возвращаются одним ZIP-архивом.
Почему направление нужно определять аккуратно
Любой корректный JSON-документ — это также корректный YAML. Если сначала проверять файл YAML-парсером, обычный .json окажется «YAML» и будет конвертирован сам в себя. Поэтому сначала смотрится расширение: .json конвертируется в YAML, а .yaml и .yml — в JSON. Только для .txt и других файлов без метки решение принимается по содержимому, и JSON пробуется первым по той же причине.
Дублирующий ключ — это ошибка, а не приоритет
В JSON побеждает последнее значение повторяющегося ключа, без всякого предупреждения. В YAML такое повторение считается ошибкой, ради которой стоит остановиться, потому что в конфигах это и случается. В docker-compose.yml два блока ports на одном уровне незаметно отменяют первый список, а обнаруживается это обычно уже в проде. Инструмент показывает номера обеих строк, чтобы было видно, какое определение потерялось бы.
Четыре схемы и чем полезна более узкая
Схема по умолчанию распознает обычные YAML-типы, включая даты и бинарные данные. Core и json становятся все строже, а failsafe считает значениями только строки, словари и списки. Выбирайте более узкую схему, когда конфиг нужно прочитать буквально. Она останавливает классические YAML-сюрпризы, когда номер версии превращается в число с плавающей запятой, а no — в false.
Конфиги остаются на вашем компьютере
В конфигах лежат имена хостов, порты, имена бакетов, а иногда и кое-что похуже, поэтому конвертация выполняется в вашей вкладке браузера, а не на сервере. Разбор и вывод работают локально, в отдельном потоке, на коде, который приехал вместе со страницей. Ничего не загружается, ничего не ставится в очередь и ничего не остается после закрытия вкладки.
Частые вопросы
Как выбирается направление конвертации?
Сначала по расширению: .json конвертируется в YAML, а .yaml и .yml — в JSON. Для .txt и других файлов без метки решение принимает содержимое — текст сначала пробуется как JSON, потом как YAML. Если ни один вариант не парсится, вы видите об этом сообщение и можете выбрать направление вручную.
Что будет с YAML-файлом с несколькими документами?
Файл, разделенный маркерами --- , можно прочитать в обоих направлениях. В многодокументном режиме каждый документ превращается в элемент одного JSON-массива. Если режим выключен, конвертируется только первый документ, а вы получаете предупреждение, что остальные пропущены, чтобы усеченный результат не стал неожиданностью.
Почему дублирующий ключ считается ошибкой?
Потому что в YAML второе определение затрет первое и ничто на это не укажет. Так часто теряют проброшенный порт или переменную окружения в конфиге. Конвертация останавливается и показывает ключ вместе с обоими номерами строк, чтобы вы сами решили, какое определение должно остаться.
Что такое схема failsafe и когда она нужна?
Failsafe распознает только строки, словари и списки — ничто не превращается в число, boolean, дату или null. Это правильный выбор, когда конфиг нужно сохранить буквально: например, когда значение 1.10 — это версия, а не число, или когда норвежский код страны no внезапно превращается в false.
Сохраняются ли комментарии YAML в JSON?
Нет и не могут сохраняться. В JSON нет синтаксиса комментариев, поэтому все, что идет после #, отбрасывается при конвертации. Это особенность целевого формата, а не пробел инструмента — храните YAML как источник правды, если комментарии для вас важны.
Что меняет уровень потока (flow level)?
Он решает, на какой глубине вложенности YAML-вывод переключается с блочного стиля с дефисами и отступами на компактный стиль вида [a, b] и {a: b}. По умолчанию все уровни остаются блочными — так конфиги удобнее читать и править вручную. Если задать положительную глубину, все, что ниже, уплотняется и становится компактнее, что удобно для сильно вложенных данных.
Поддерживаются ли якори и алиасы?
Нет. Якори, алиасы и ключи слияния — &defaults, *defaults и << — вместе с пользовательскими тегами приложения остаются за пределами того, что этот инструмент читает. Файл с ними получает понятную ошибку с указанием строки, а не незаметно искаженный результат. Для конфига перед деплоем так безопаснее.
Мой файл где-то загружается?
Нет. Парсеры поставляются вместе со страницей и работают в вашей вкладке браузера, поэтому конфигурация не выходит в сеть. Нет серверной части, которая могла бы ее сохранить, и ничего не остается после закрытия вкладки.