Конвертер YAML в JSON онлайн
YAML в JSON (безопасная схема, якоря и слияние ключей, строка ошибки)
Работает в браузере · файлы никуда не загружаются
Что это за инструмент
Конфигурацию часто пишут на YAML, а программы обмениваются данными в JSON. Инструмент преобразует YAML в JSON. Результат обновляется по мере ввода, а синтаксические ошибки указываются по строке и столбцу.
Как пользоваться
- Вставьте YAML в поле ввода.
- Выберите формат JSON: 2 пробела, 4 пробела, табуляция или минификация.
- Скопируйте результат.
- Если показана ошибка со строкой и столбцом, проверьте рядом с этим местом отступы, кавычки и пробел после двоеточия.
Как это работает
- Разбор выполняет js-yaml с core-схемой YAML 1.2. Логическими значениями, null и числами считаются только
true/false,null(или~), десятичные, восьмеричные и шестнадцатеричные целые и числа с плавающей точкой. Все остальное — строки, а"123"в кавычках всегда строка. - Пользовательские теги и теги кода вроде
!!js/functionне поддерживаются и вызывают ошибку. Ничего не выполняется как код. - Якоря (
&) и ссылки (*) раскрываются в значения, ключ слияния<<обрабатывается. Повторяющийся ключ в одном отображении — ошибка. - Позиции ошибок — строки и столбцы с нумерацией от 1.
- Несколько документов оборачиваются в массив. Пустой ввод — ошибка.
- Значения, которые нельзя представить в JSON, преобразуются по правилам самого JSON, поэтому
.infи.nanстановятсяnull. Целые числа больше 2^53 округляются при чтении как числа JavaScript.
Примеры
Ввод:
base: &b
x: 1
item:
<<: *b
name: Иван
Результат:
{"base": {"x": 1}, "item": {"x": 1, "name": "Иван"}}
Частые вопросы
Выполняется ли тег вроде !!js/function?
Нет. Инструмент использует безопасную схему, которая читает только обычные данные (строки, числа, логические значения, null, массивы и объекты). Пользовательские теги и функции никогда не выполняются и выдаются как ошибка.
Где посмотреть, что не так с моим YAML?
При ошибке показываются строка и столбец, где обнаружена проблема, и пояснение парсера. Типичные причины — неверные отступы и незакрытые кавычки или скобки. Место обнаружения может оказаться чуть ниже настоящей причины, поэтому проверьте и строки выше.
Становятся ли yes, no, on и off логическими значениями?
Нет. По YAML 1.2 логические значения — только true и false, а yes, no, on и off остаются строками. Значение, похожее на дату, например 2024-01-02, тоже остается обычной строкой, а не объектом даты.
Почему появляется ошибка «слишком много ссылок» (too many aliases)?
Ради безопасности в документе может быть не более 100 ссылок (alias). Ввод с вложенными ссылками, раздувающими результат экспоненциально (alias bomb), может подвесить вкладку браузера, поэтому ограничены и число ссылок, и размер результата (около 5 МБ). Обычные конфигурационные файлы намного меньше этих пределов.
Что если во вводе несколько документов, разделенных ---?
Один документ дает свое значение. Два и больше дают JSON-массив документов по порядку, и появляется сообщение о том, сколько их найдено.