Преобразуйте документы TOML в JSON с настраиваемыми отступами и компактным выводом.
Преобразуйте документы TOML в JSON с настраиваемыми отступами и компактным выводом. Преобразуйте документы TOML в JSON с настраиваемыми отступами и компактным выводом.
Вывод
Справка
Зачем вам TOML как JSON
JSON — lingua franca веба: его понимает любой API, его подсветит любой редактор, и в стандартной библиотеке любого языка есть парсер. TOML отлично подходит для конфигураций, редактируемых человеком, но реже поддерживается как формат обмена данными в среде выполнения. Когда нужно скормить TOML-конфигурацию инструменту, потребляющему только JSON (веб-песочницы, валидаторы схем, генераторы кода и т.д.), надёжный конвертер TOML→JSON выручает.
Преобразование почти без потерь, потому что оба формата достаточно выразительны, чтобы представить одни и те же примитивы. Немногие специфичные для TOML типы (многострочные строки, даты) переводятся в обычные строки; немногие специфичные для JSON значения (null) переводятся в JSON-литерал null, для которого у TOML нет родного эквивалента.
Полезные возможности
Конвертер предлагает переключатель «форматировать» (с отступом 2/4 пробела) и компактный режим (одна строка). Для очень больших конфигурационных файлов компактный вывод гораздо проще вставить в тело запроса curl. Кнопка «поменять местами» возвращает JSON-вывод обратно в поле ввода, чтобы вы могли заново отредактировать и реэкспортировать его как TOML.
Советы по работе
После преобразования проверьте JSON валидатором схемы (ajv, jsonschema), прежде чем передавать его дальше. Парсер TOML строг: он отвергнет незакавыченные скаляры, начинающиеся с цифр, встроенные таблицы с комментариями и другие распространённые ошибки. Используйте сообщения об ошибках, чтобы исправить исходный документ, а не JSON.
Практический пример
Допустим, вы ведёте фрагмент pyproject.toml, который перечисляет runtime-конфигурацию вашего инструмента под [tool.beetools]. Чтобы передать ту же конфигурацию в конвейер сборки JavaScript, принимающий только JSON, прогоните фрагмент через этот конвертер. Вывод сохраняет иерархию таблиц, поэтому вложенный блок [tool.beetools.cache] становится { "tool": { "beetools": { "cache": { ... } } } }. Точечные ключи при выводе сворачиваются во вложенные объекты, отражая то, как парсер TOML изначально их построил. Получив JSON, проверьте его через ajv или jsonschema, прежде чем передавать дальше — конвертер переводит только синтаксис.
Часто задаваемые вопросы
Поддерживает ли конвертер возможности TOML 1.0?
Да. Конвертер разбирает TOML 1.0, включая массивы таблиц (`[[name]]`), встроенные таблицы (`{ key = "value" }`) и точечные ключи (`a.b.c`).
Как даты TOML выводятся в JSON?
Даты без времени становятся JSON-строками в форме `YYYY-MM-DD`. Даты-время становятся `YYYY-MM-DDTHH:MM:SS[.fraction][Z|+offset]`. Получатель JSON может разобрать их библиотекой дат своего языка.
А что с многострочными строками TOML?
Они выводятся как обычные JSON-строки со встроенными символами перевода строки. JSON не может сохранить точный литеральный стиль, но разобранное значение идентично.
Может ли конвертер обрабатывать точечные ключи?
Да. `a.b.c = 1` становится `{ "a": { "b": { "c": 1 } } }`. Конвертер раскрывает каждый точечный ключ во вложенные объекты.
Отвергнет ли конвертер неверный TOML?
Да. Парсер выдаёт ошибку с указанием строки/столбца на первом недопустимом токене. Исправьте исходный TOML и повторите.
Мой TOML загружается куда-либо?
Нет. Разбор происходит локально через поставляемую библиотеку smol-toml; ничего не покидает браузер.