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

Вставьте YAML (манифесты Kubernetes, Docker Compose, конфиги CI) и мгновенно получите чистый JSON. Ошибки показывают точную строку с указателем.

Работает в браузереБез регистрацииНичего не загружается

Результат JSON

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

  1. Вставьте YAML в левое поле или откройте файл .yaml/.yml.
  2. JSON появляется справа по мере ввода. Выберите для результата 2 пробела, 4 пробела или табуляцию.
  3. Отметьте Сортировать ключи, чтобы упорядочить ключи по алфавиту. Это помогает при сравнении конфигов.
  4. Если YAML некорректен, строка состояния покажет строку и столбец, а проблемные строки появятся ниже с маркером ^.
  5. Скопируйте или скачайте JSON либо нажмите Поменять, чтобы конвертировать его обратно в YAML.

Как YAML отображается в JSON

JSON — подмножество YAML 1.2, поэтому каждое отображение (mapping) YAML становится объектом JSON, каждая последовательность — массивом, а скаляры — строками, числами, логическими значениями или null. Возможности, существующие только в YAML, разрешаются при конвертации:

  • Комментарии (# …) удаляются, потому что в JSON нет комментариев.
  • Якоря и псевдонимы (&base, *base, <<: *base) разворачиваются в полные копии.
  • Метки времени вроде 2024-01-02 становятся строками ISO 8601.
  • Многострочные строки (блоки | literal и > folded) становятся обычными строками с экранированием \n.

YAML из нескольких документов

Один файл может содержать несколько YAML-документов, разделённых ---, как это принято в манифестах Kubernetes. В JSON аналога нет, поэтому конвертер возвращает JSON-массив с одним элементом на документ и сообщает об этом в строке состояния. Одиночный --- в конце игнорируется.

Подводные камни YAML 1.1 и 1.2

Этот конвертер следует YAML 1.2, актуальной спецификации. Многие старые инструменты (PyYAML, Psych в Ruby, некоторые версии Kubernetes и Ansible) всё ещё читают YAML 1.1, где правила отличаются:

  • Проблема Норвегии: в YAML 1.1 country: no означает false, и код страны Норвегии NO исчезает. То же относится к yes, on, off, y и n. В YAML 1.2 логическими значениями считаются только true и false.
  • Восьмеричные числа: 0755 — восьмеричное в 1.1, но обычное десятичное в 1.2, где используется 0o755. Для надёжности берите права доступа к файлам в кавычки.
  • Шестидесятеричные числа: в 1.1 22:30 может разобраться как число 1350. Берите в кавычки время и маппинги портов вроде "8080:80".

При конвертации JSON → YAML неоднозначные строки ('no', 'on', 'y') автоматически берутся в кавычки, поэтому полученный YAML читается одинаково в обеих версиях.

Часто задаваемые вопросы

Загружается ли мой YAML куда-либо?
Нет. Разбор выполняется в браузере open-source библиотекой js-yaml. Конфиги с секретами или внутренними именами хостов не покидают ваш компьютер.
Почему мой YAML падает с ошибкой «bad indentation»?
Вложенность в YAML задаётся пробелами, а табуляция для отступов запрещена. Убедитесь, что ключи одного уровня выровнены точно, а элементы списка (-) последовательно смещены под родительским ключом.
Что происходит с комментариями YAML?
Они удаляются. В JSON нет синтаксиса комментариев, поэтому перенести их нельзя. Обратная конвертация в YAML их не восстановит.
Почему <code>no</code> осталось строкой?
Инструмент следует YAML 1.2, где логическими значениями являются только true/false. Старые парсеры YAML 1.1 превратили бы no, yes, on и off в логические значения («проблема Норвегии»).
Можно ли конвертировать манифест Kubernetes с несколькими ресурсами?
Да. Каждый ресурс, отделённый ---, становится элементом результирующего JSON-массива, готового для jq или kubectl apply -f -, который тоже принимает списки JSON.

Похожие инструменты