SS Тулбокс
SS Тулбокс
Все данные обрабатываются локально

Конвертер TOML в JSON для Cargo.toml, pyproject.toml и конфигов Rust

Читайте Cargo.toml, pyproject.toml или любой TOML-конфиг как JSON и записывайте JSON-объекты обратно в TOML-таблицы в браузере. Парсер обрабатывает даты, массивы таблиц и таблицы с точками; комментарии, порядок ключей и null не сохраняются.

Как работает этот конвертер TOML ↔ JSON

  1. Создан для манифестов

    Вставьте Cargo.toml или pyproject.toml и просмотрите вложенные таблицы и записи [[bin]] / [[bench]] как JSON-объекты и массивы.

  2. Массивы таблиц работают в обе стороны

    Блоки [[products]] становятся массивами объектов, а JSON-массив объектов одинаковой формы записывается обратно блоками [[table]]. Вложенные массивы остаются inline.

  3. Даты и время разбираются как объекты Date

    Дата-время, даты и время TOML становятся JavaScript Date, поэтому в JSON видны ISO-строки вроде 1979-05-27T07:32:00.000Z. При обратном преобразовании пишется строка в кавычках, а не нативная дата TOML.

  4. Вложенные и точечные таблицы пересобираются

    [tool.poetry] и [a.b] становятся вложенными объектами. Скалярные ключи выводятся раньше подтаблиц, поэтому исходный порядок не сохраняется.

  5. Локальное преобразование с выбором файла

    Выберите файлы .toml / .json или вставьте текст и скачайте результат. Ничего не отправляется, настроек отступов или сортировки нет.

Частые вопросы о TOML ↔ JSON

Поддерживает ли JSON → TOML null?

Нет. В TOML нет типа null, и сериализатор молча удаляет ключи со значением null, включая элементы null в массивах. Удалите или замените null перед преобразованием, иначе данные исчезнут без ошибки.

Как обрабатываются даты и время?

TOML → JSON разбирает дата-время, локальные даты и локальное время в объекты Date и показывает ISO-строки: 1979-05-27T07:32:00.000Z, 1979-05-27, 07:32:00.000. JSON → TOML считает эти строки обычным текстом и заключает в кавычки, поэтому они не возвращаются как нативные даты TOML. Без кавычек выводится только настоящий объект Date, полученный при разборе. Короткое время вроде 07:32 вызывает ошибку «Incomplete time» — секунды обязательны.

Сохраняются ли комментарии и порядок ключей?

Нет. Комментарии и пустые строки отбрасываются при разборе и не создаются заново. Порядок тоже меняется: сначала скалярные ключи, затем подтаблицы. Повторяющиеся ключи отклоняются с «Can't redefine existing key».

Как представлены массивы таблиц?

Блоки [[products]] становятся JSON-массивами объектов. В обратную сторону массив объектов записывается блоками [[products]], а вложенные массивы остаются inline. Корень JSON должен быть объектом: массив в корне вызывает ошибку «Can only stringify objects, not array».

Почему мой JSON-массив выдаёт «Array values can't have mixed types»?

Этот парсер требует однородные массивы TOML (правила TOML 0.5). Массив со смесью чисел и строк или объектов и скаляров вызывает ошибку. Разделите его на отдельные массивы или используйте таблицу.

А большие целые, NaN и пустые значения?

Целые больше 2^53 теряют точность и записываются с подчёркиваниями, например 12_345_678_901_234_567_000. NaN и Infinity становятся nan / inf. Пустой массив пишется [ ], пустой объект { }, а ключи undefined молча пропускаются.

Загружается ли мой файл и что происходит при ошибках?

Всё выполняется в браузере; файлы никогда не отправляются. Настроенного лимита нет, но преобразование синхронное, поэтому манифест в несколько MB может заблокировать страницу. Неверный TOML окрашивает левое поле в красный и показывает тост; неверный JSON — правое поле. Ни одно направление не даёт частичного результата.

Связанные инструменты
SponsorMindElixir