tigtools

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

Выберите направление, вставьте данные и сразу получите результат преобразования. Пригодится для манифестов Kubernetes, конвейеров CI и конфигураций приложений.

Работает в браузере Без регистрации

Направление
Отступ

Как пользоваться

  1. Выберите направление: JSON → YAML или YAML → JSON.
  2. Вставьте данные или нажмите «Попробовать пример». Результат обновляется по мере ввода.
  3. Выберите отступ в 2 или 4 пробела для результата.
  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 не загружаются на сервер, не сохраняются и не передаются в аналитику.