CodeKitHub
Инструменты JSON

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

Последнее обновление:

Этот инструмент конвертирует JSON в YAML и YAML в JSON в обоих направлениях, полностью в вашем браузере. Вставьте данные, выберите направление — и получите чистый, корректно оформленный с отступами результат. Это удобно для редактирования манифестов Kubernetes, файлов Docker Compose, воркфлоу GitHub Actions или любой конфигурации, которая хранится в YAML, но которую проще генерировать или просматривать в виде JSON.

Что это за инструмент?

YAML — предпочтительный формат для большинства современных конфигурационных файлов: манифестов Kubernetes, Docker Compose, пайплайнов GitHub Actions и GitLab CI, playbook'ов Ansible — потому что он читается человеком, редактирующим файлы вручную, гораздо легче, чем JSON: большинству ключей не нужны кавычки, нет риска ошибиться с лишней запятой в конце, а также поддерживаются комментарии. JSON же — это то, что большинство API и языков программирования генерирует и потребляет нативно.

Этот инструмент связывает оба формата с помощью js-yaml — широко используемой реализации спецификации YAML на JavaScript, поэтому разбор и генерация подчиняются тем же правилам, что и в инструментах, понимающих YAML, таких как `kubectl` или CI-раннер.

При конвертации JSON в YAML объекты превращаются в блоки key: value с отступами, а массивы — в элементы списка с префиксом `-`. Конвертация YAML в JSON делает обратное, а также приводит специфичные для YAML сокращения типов (например, `true`, `null` или числа без кавычек) к соответствующим типам JSON.

Зачем его использовать?

  • Двунаправленность — конвертируйте JSON в YAML или YAML в JSON на одном и том же экране.
  • Разбор и генерация на основе стандарта через js-yaml, поэтому результат соответствует тому, чего ожидают реальные YAML-инструменты (Kubernetes, CI-системы, Ansible).
  • Обрабатывает вложенные объекты и массивы любой глубины, преобразуя между основанной на отступах структурой YAML и фигурными/квадратными скобками JSON.
  • Корректно интерпретирует сокращения типов YAML — значения true/false, null и числа без кавычек становятся соответствующими типами JSON, а не строками.
  • Копируйте в буфер обмена или скачивайте в виде файла .json или .yaml.
  • Полностью работает на стороне клиента — ничто из вставленного вами никуда не загружается.

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

  1. Выберите направление: «JSON → YAML» или «YAML → JSON».
  2. Вставьте данные в поле ввода.
  3. Нажмите «Convert».
  4. Проверьте результат, затем скопируйте его или нажмите «Download», чтобы сохранить файл.

Пример

Ввод

{"name":"Alice","roles":["admin","editor"],"active":true}

Результат

name: Alice
roles:
  - admin
  - editor
active: true

Обратите внимание, как массив превращается в список элементов с дефисом под "roles", а булево значение остаётся true без кавычек, а не строкой "true".

Практические советы

  • Написание манифеста Kubernetes или воркфлоу GitHub Actions: сначала набросайте структуру в виде JSON (многие редакторы и ИИ-инструменты генерируют JSON более надёжно), а затем конвертируйте в YAML для итогового файла.
  • Отладка некорректно работающей конфигурации YAML: конвертируйте её в JSON, чтобы точно увидеть, какие значения являются строками, числами или булевыми значениями — гибкий синтаксис YAML может скрывать несоответствия типов, которые в JSON видны сразу.
  • Если ваш JSON содержит ключи со специальными символами или начинающиеся с цифры, js-yaml автоматически заключит их в кавычки в выводе YAML, чтобы они корректно разбирались при повторном чтении.

Почему приведение типов — самая коварная часть YAML

Главное преимущество YAML перед JSON в удобстве использования — отсутствие необходимости в кавычках для большинства значений — одновременно является и главным источником незаметных ошибок. Классический пример — «норвежская проблема»: в YAML 1.1 (используемом многими старыми парсерами) значение `no` без кавычек интерпретируется как булево `false`, а не как строка «no», что в реальности ломало конфигурации, перечисляющие код страны Норвегии. Этот инструмент следует спецификации YAML 1.2, которая сузила набор значений без кавычек, трактуемых как булевы, до `true` и `false` (и их вариантов с разным регистром), уменьшив — хотя и не устранив полностью — этот класс неожиданностей. Если вы не уверены, каким типом будет распознано значение, самый безопасный вариант — явно заключить его в кавычки в вашем YAML.

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

Сохраняются ли комментарии YAML при конвертации в JSON и обратно?

Нет. В JSON нет понятия комментариев, поэтому при конвертации YAML в JSON все комментарии с # из исходного файла отбрасываются. Если затем конвертировать этот JSON обратно в YAML, комментарии не восстановятся — это неотъемлемое ограничение формата, а не ошибка инструмента.

Как инструмент обрабатывает якоря и алиасы YAML (& и *)?

Используемый парсер (js-yaml) разрешает якоря и алиасы перед генерацией JSON, поэтому YAML-файл, использующий якоря & и алиасы * для повторного использования блока данных, конвертируется в JSON с полностью развёрнутыми данными в каждом месте, где на них есть ссылка.

Почему моё число из YAML стало строкой в JSON, или наоборот?

Если значение в исходном YAML заключено в кавычки (например, version: "3.10"), оно намеренно обрабатывается как строка — это важно, поскольку числа YAML без кавычек, такие как 3.10, могут потерять конечный ноль при разборе как число с плавающей точкой. Заключите значение в кавычки в исходном YAML, если вам нужно, чтобы оно обязательно обрабатывалось как текст.

Могу ли я конвертировать YAML-файл с несколькими документами (разделёнными ---)?

Этот инструмент конвертирует по одному YAML-документу за раз. Если ваш файл содержит несколько документов, разделённых маркерами ---, конвертируйте по одному разделу за раз, либо сначала уберите разделители и объедините их в один документ, если это подходит для вашей задачи.

Загружаются ли мои данные куда-либо?

Нет. Конвертация полностью выполняется в вашем браузере с помощью библиотеки js-yaml — ничего не отправляется на сервер, поэтому инструмент безопасно использовать с реальными конфигурационными файлами, включая те, что содержат внутренние имена хостов или детали инфраструктуры.

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