Как пользоваться
- Выберите направление: JSON → YAML или YAML → JSON.
- Вставьте данные или нажмите «Попробовать пример». Результат обновляется по мере ввода.
- Выберите отступ в 2 или 4 пробела для результата.
- Скопируйте или скачайте результат. Нажмите «Использовать результат как входные данные», чтобы поменять направление и выполнить обратное преобразование.
Как это работает
Для преобразования используется библиотека yaml с открытым исходным кодом (версия 2), реализующая спецификацию YAML 1.2. Для практических задач YAML 1.2 является надмножеством JSON, поэтому любой документ JSON преобразуется в YAML без потерь, а YAML, содержащий только карты, списки, строки, числа, логические значения и null, преобразуется обратно в идентичный JSON.
При записи YAML инструмент заключает в кавычки строки, которые можно принять за другие значения. Парсеры старой версии YAML 1.1, например PyYAML и многие инструменты CI, читают yes, no, on и off как логические значения, 0777 как восьмеричное число, а 2024-01-31 как дату, поэтому они записываются как "yes", "0777" и "2024-01-31". Длинные строки не разбиваются на несколько строк. Комментарии не сохраняются, поскольку в JSON нет комментариев.
При чтении YAML якоря (&name) и псевдонимы (*name), включая ключ объединения <<, раскрываются, а файл с несколькими документами, разделёнными с помощью ---, преобразуется в массив JSON. Для защиты браузера раскрытие псевдонимов ограничено — это предотвращает обработку документов типа «миллиард смехов». Значения YAML, которым нет эквивалента в JSON, преобразуются максимально близко: .inf и .nan становятся null, а временные метки остаются строками. Синтаксические ошибки отображаются с указанием строки и столбца.
Примеры
Манифест Kubernetes
Манифест Deployment, созданный скриптом в формате JSON, преобразуется в привычный пользователям kubectl формат YAML: списки в containers записываются с элементами вида - name: web. Значения вроде "no" остаются в кавычках и не теряют тип строки.
Конфигурация CI с якорями
Файл конвейера задаёт значения по умолчанию с помощью defaults: &defaults и повторно использует их через <<: *defaults. Преобразование в JSON показывает, какие ключи получает каждая задача после объединения.
Спецификация OpenAPI
Файл OpenAPI поддерживается в YAML, но генератору кода нужен JSON. Вставьте YAML, выберите отступ в 2 пробела и скачайте файл .json.
Часто задаваемые вопросы
Почему в моём YAML значение "yes" записано в кавычках?
По правилам YAML 1.1, которые до сих пор используются в PyYAML, Ansible и многих других инструментах, yes, no, on или off без кавычек считается логическим значением. Кавычки сохраняют строковый тип в любом парсере. Сами кавычки не входят в значение.
Сохраняются ли комментарии YAML при преобразовании в JSON?
Нет. В JSON нет синтаксиса комментариев, поэтому комментарии удаляются. При обратном преобразовании JSON в YAML они не восстановятся.
Что происходит с несколькими документами YAML, разделёнными с помощью ---?
Они преобразуются в один массив JSON, где каждый элемент соответствует документу в исходном порядке. Один документ преобразуется непосредственно в его значение.
Как обрабатываются пользовательские теги, например !Ref в CloudFormation?
Теги, зависящие от конкретного приложения, не распознаются. Инструмент показывает предупреждение и преобразует помеченное значение как обычное: например, !Ref MyBucket становится строкой "MyBucket", а сам тег теряется.
Конфиденциальность
Преобразование в обоих направлениях выполняется прямо в браузере. Ваши данные JSON или YAML не загружаются на сервер, не сохраняются и не передаются в аналитику.