Блог
Русский

Конвертер YAML в JSON онлайн

YAML в JSON (безопасная схема, якоря и слияние ключей, строка ошибки)

Работает в браузере · файлы никуда не загружаются

Результат JSON

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

Конфигурацию часто пишут на YAML, а программы обмениваются данными в JSON. Инструмент преобразует YAML в JSON. Результат обновляется по мере ввода, а синтаксические ошибки указываются по строке и столбцу.

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

  1. Вставьте YAML в поле ввода.
  2. Выберите формат JSON: 2 пробела, 4 пробела, табуляция или минификация.
  3. Скопируйте результат.
  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-массив документов по порядку, и появляется сообщение о том, сколько их найдено.

Не нашли нужный инструмент?