Как конвертировать JSON в YAML
- Вставьте JSON или откройте файл — YAML появляется по мере ввода. Выберите отступ в 2 или 4 пробела.
- Для обратного преобразования переключите направление на YAML → JSON и вставьте YAML.
- Скопируйте результат или скачайте его как файл
.yamlили.json.
JSON vs YAML: сравнение
| JSON | YAML | |
|---|---|---|
| Структура | фигурные {} и квадратные [] скобки | отступы и элементы списка с - |
| Строки | всегда в двойных кавычках | кавычки только при необходимости |
| Комментарии | не допускаются | # comment |
| Многострочный текст | escape-последовательности \n | литеральные блоки с | |
| Типичное применение | API и обмен данными | файлы конфигурации |
YAML 1.2 — надмножество JSON, поэтому JSON-документ уже является валидным YAML. Конвертер же записывает данные в более читаемом блочном стиле.
Значения, которые в YAML нужно брать в кавычки
Некоторые слова без кавычек в YAML меняют тип: yes, no, on и off — логические значения для парсеров YAML 1.1, 007 и 1e3 — числа, а null или ~ означают null. Это знаменитая «норвежская проблема»: код страны NO превращается в false, если не взят в кавычки. Конвертер автоматически заключает такие строки в кавычки, поэтому при обратном чтении YAML даёт в точности те же данные.
Какой YAML поддерживается для YAML → JSON
Парсер понимает YAML, который используется в файлах конфигурации и API: блочные словари и списки, строки без кавычек, в одинарных и двойных кавычках, многострочные блоки | и >, встроенные коллекции [ ] и { }, комментарии и маркер документа ---. Для якорей (&), алиасов (*) и пользовательских тегов выводится сообщение о том, что они не поддерживаются, с номером строки. Из файла с несколькими документами конвертируется только первый.
Часто задаваемые вопросы
YAML — это надмножество JSON?
YAML 1.2 задумывался как надмножество JSON, поэтому практически любой JSON-файл — это ещё и валидный YAML. Обратное неверно: в YAML есть комментарии, якоря и многострочные блоки, которых нет в JSON.
Сохраняются ли комментарии при конвертации YAML в JSON?
Нет. В JSON нет комментариев, поэтому они отбрасываются. Ключи, значения и их порядок сохраняются.
Почему мой YAML не принимается?
Обычные причины — табуляция в отступах (YAML допускает только пробелы), элементы одного списка или словаря, которые начинаются в разных столбцах, и пропущенный пробел после двоеточия. В сообщении об ошибке указана строка.
Как типизируются значения YAML в JSON?
По базовой схеме (core schema) YAML 1.2: true/false становятся логическими значениями, null и ~ — null, обычные числа — числами JSON, а слова вроде yes остаются строками. Берите коды вроде "007" в YAML в кавычки, чтобы они остались текстом.