Конвертер YAML в JSON
Вставьте YAML (манифесты Kubernetes, Docker Compose, конфиги CI) и мгновенно получите чистый JSON. Ошибки показывают точную строку с указателем.
Работает в браузереБез регистрацииНичего не загружается
Как пользоваться: YAML в JSON
- Вставьте YAML в левое поле или откройте файл
.yaml/.yml. - JSON появляется справа по мере ввода. Выберите для результата 2 пробела, 4 пробела или табуляцию.
- Отметьте Сортировать ключи, чтобы упорядочить ключи по алфавиту. Это помогает при сравнении конфигов.
- Если YAML некорректен, строка состояния покажет строку и столбец, а проблемные строки появятся ниже с маркером
^. - Скопируйте или скачайте 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 куда-либо?
Почему мой YAML падает с ошибкой «bad indentation»?
-) последовательно смещены под родительским ключом.Что происходит с комментариями YAML?
Почему <code>no</code> осталось строкой?
true/false. Старые парсеры YAML 1.1 превратили бы no, yes, on и off в логические значения («проблема Норвегии»).Можно ли конвертировать манифест Kubernetes с несколькими ресурсами?
---, становится элементом результирующего JSON-массива, готового для jq или kubectl apply -f -, который тоже принимает списки JSON.