ToolDeck

TOML

2 инструментов

Инструменты TOML на ToolDeck позволяют форматировать, валидировать и конвертировать TOML-файлы конфигурации прямо в браузере — без установки, без учётной записи и без передачи данных на сервер. TOML Formatter парсит ваш TOML и повторно сериализует его с единообразными отступами, нормализованным порядком ключей и встроенной проверкой синтаксических ошибок с указанием точного места проблемы. TOML to JSON Converter преобразует TOML-документы в эквивалентный JSON, сохраняя типы данных — в том числе дату/время, встроенные таблицы и массивы таблиц. Оба инструмента работают полностью на стороне клиента, поэтому ваши конфигурационные файлы — которые зачастую содержат учётные данные баз данных, адреса API-эндпоинтов и секреты развёртывания — остаются на вашем устройстве. Для обратного преобразования воспользуйтесь JSON to TOML Converter в категории JSON.

Что такое TOML-инструменты?

TOML (Tom's Obvious, Minimal Language) — формат конфигурационных файлов, построенный на явном и недвусмысленном синтаксисе. Созданный Томом Престон-Вернером, сооснователем GitHub, TOML впервые вышел в 2013 году и достиг спецификации версии 1.0 в январе 2021 года. Формат однозначно отображается на хеш-таблицу: каждый TOML-файл определяет дерево пар «ключ — значение», организованных в таблицы (разделы, обозначенные [скобками]). В отличие от YAML, TOML не использует отступы для задания структуры, что полностью исключает класс ошибок парсинга, связанных с пробельными символами. В отличие от JSON, TOML поддерживает комментарии, встроенные типы даты/времени и многострочные строки — возможности, необходимые конфигурационным файлам, но изначально не предусмотренные в JSON.

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

Подобные задачи часто возникают в Rust-проектах (где Cargo.toml является манифестом пакета), в Python-пакетировании (pyproject.toml заменил setup.py в качестве стандартной конфигурации сборки согласно PEP 518 и PEP 621), в статических сайтах на Hugo (которые по умолчанию используют TOML для конфигурации), а также в любых инфраструктурных проектах, хранящих конфигурацию в TOML-файлах. Спецификация TOML поддерживается на toml.io, а парсеры существуют для всех основных языков программирования.

Почему стоит использовать TOML-инструменты на ToolDeck?

TOML-инструменты ToolDeck парсят и обрабатывают всё внутри вкладки браузера с помощью JavaScript. Данные конфигурации не передаются на сервер, учётная запись не требуется, а инструменты работают в офлайн-режиме после первоначальной загрузки страницы.

🔒
Приватность по умолчанию
Конфигурационные файлы нередко содержат конфиденциальные значения — URL-адреса баз данных, API-ключи, параметры развёртывания. ToolDeck обрабатывает TOML полностью на стороне клиента, поэтому данные не покидают браузер. Безопасно использовать для проприетарных проектов и внутренних конфигураций инфраструктуры.
Мгновенный результат
Вставьте TOML — сразу получите отформатированный вывод или JSON. Синтаксические ошибки выводятся с указанием номера строки и описанием проблемы. Не нужно ждать установки CLI-инструмента или завершения шага сборки.
🔄
Точное преобразование типов
TOML to JSON Converter сохраняет специфичные для TOML типы: смещённые дата/время, локальные даты и локальное время преобразуются в строки ISO 8601. Точность целых чисел и чисел с плавающей точкой сохраняется. Массивы таблиц корректно отображаются на JSON-массивы объектов.
🌐
Не требует установки
Работает на любом устройстве с современным браузером. Удобно при проверке pull request на машине без обычного окружения разработки или когда нужно быстро проверить TOML-файл коллеги.

Варианты использования TOML-инструментов

Форматирование, валидация и конвертация TOML востребованы в разных ролях и типах проектов. Rust-разработчики работают с Cargo.toml ежедневно. Python-разработчики настраивают сборку и инструменты через pyproject.toml. DevOps-инженеры управляют конфигурацией приложений в формате TOML. Приведённые ниже сценарии показывают, где браузерные TOML-инструменты экономят время по сравнению с написанием одноразового скрипта или установкой CLI-инструмента.

Приведение Cargo.toml в порядок
После слияния нескольких добавлений зависимостей Cargo.toml Rust-проекта имеет несогласованное форматирование. Пропустите его через TOML Formatter, чтобы нормализовать отступы и порядок ключей перед коммитом.
pyproject.toml в JSON
CI-конвейеру нужны метаданные сборки в формате JSON, но источником истины является pyproject.toml. Используйте TOML to JSON Converter, чтобы получить JSON-представление и убедиться в правильности маппинга до того, как автоматизировать конвертацию в конвейере.
Миграция конфигурации
Перевод приложения с JSON-конфигурации на TOML (или наоборот). TOML to JSON Converter позволяет сравнить два представления рядом и убедиться, что типы данных, вложенные структуры и семантика массивов сохранены.
Отладка синтаксиса
TOML-файл конфигурации не парсится при запуске приложения и выдаёт непонятное сообщение об ошибке. Вставьте его в TOML Formatter, чтобы получить точные номера строки и столбца для синтаксической ошибки, а также описание того, что ожидал парсер.
Генерация документации
При написании документации с примерами конфигурации в форматах TOML и JSON конвертируйте канонический TOML-пример через TOML to JSON Converter, чтобы обе версии оставались синхронизированными без ручного перевода.
Изучение синтаксиса TOML
Разработчики, впервые знакомящиеся с TOML, могут экспериментировать с форматом: писать TOML в TOML Formatter, видеть ошибки валидации в реальном времени и сравнивать структуру с отформатированным выводом. Это быстрее, чем читать спецификацию.

Справочник по типам данных TOML

TOML v1.0 определяет следующие типы данных. Каждый тип отображается на конкретное представление при конвертации в JSON. Таблица ниже охватывает синтаксис, примеры и поведение при конвертации для каждого типа TOML.

ТипСинтаксисПримерМаппинг в JSON
String"..." или '...'name = "TOML"JSON-строка. Базовые строки поддерживают escape-последовательности (\n, \t, \u). Литеральные строки ('...') воспринимают обратный слеш как обычный символ.
Integerцифры, 0x, 0o, 0bport = 8080JSON-число. Поддерживает шестнадцатеричный (0xDEAD), восьмеричный (0o755), двоичный (0b1010) форматы и разделители подчёркиванием (1_000).
Floatцифры с . или epi = 3.14159JSON-число. Поддерживает inf, -inf и nan (преобразуется в null или строку в JSON, так как JSON не имеет типа NaN).
Booleantrue / falseenabled = trueJSON-булево. Допустимы только строчные true и false.
Offset Date-TimeRFC 33392024-01-15T09:30:00ZJSON-строка (ISO 8601). Включает смещение часового пояса. В JSON нет встроенного типа datetime.
Local Date-Timedate T time2024-01-15T09:30:00JSON-строка. Без информации о часовом поясе. Подходит для локального времени.
Local DateYYYY-MM-DD2024-01-15JSON-строка. Дата без компонента времени.
Local TimeHH:MM:SS09:30:00JSON-строка. Время без даты и часового пояса.
Array[value, ...]ports = [8080, 8443]JSON-массив. Массивы TOML могут быть разнородными в TOML v1.0, но должны быть однородными в v0.5.
TabletomlCategoryContent.r10Syntax[database]JSON-объект. Стандартные таблицы используют [скобки]. Встроенные таблицы записываются в фигурных скобках в одну строку.

TOML v1.0.0 (спецификация на toml.io) — текущая стабильная версия. Массивы таблиц используют [[двойные скобки]] для определения повторяющихся записей таблицы, которые отображаются на JSON-массивы объектов.

Как выбрать подходящий TOML-инструмент

На ToolDeck есть три инструмента для работы с TOML-файлами. Два находятся в категории TOML, один — в категории JSON для обратного направления конвертации. Выберите инструмент, соответствующий вашей задаче.

  1. 1
    Если вам нужно переформатировать TOML-файл, нормализовать порядок ключей или валидировать синтаксис TOML с построчными сообщениями об ошибкахTOML Formatter
  2. 2
    Если вам нужно конвертировать TOML-конфигурацию в JSON для использования в API, скриптах или инструментах, ожидающих JSON-вводTOML to JSON Converter
  3. 3
    Если вам нужно конвертировать JSON-документ в формат TOML для проектов, использующих TOML в качестве стандарта конфигурацииJSON to TOML Converter

Для повседневной работы с TOML инструмент TOML Formatter выполняет форматирование и валидацию за один шаг — вставьте TOML, и он либо выдаст чистый результат, либо точно укажет, где находится синтаксическая ошибка. Когда нужно перейти от TOML к JSON, TOML to JSON Converter сохраняет все типы данных TOML, включая дату/время и вложенные таблицы. Для обратного направления (JSON в TOML) используйте JSON to TOML Converter в категории JSON. Если вы отлаживаете конфигурацию, которая не парсится, начните с TOML Formatter: его сообщения об ошибках содержат номера строк и описания ожидаемых токенов, которые точнее, чем сообщения большинства TOML-парсеров на уровне приложения.

Часто задаваемые вопросы

В чём разница между TOML и YAML?
TOML использует явный синтаксис скобок для таблиц и не опирается на отступы для задания структуры. YAML использует отступы для определения иерархии, что делает его чувствительным к ошибкам в пробельных символах — один лишний пробел может полностью изменить разобранную структуру. TOML также имеет встроенные типы даты/времени и запрещает дублирование ключей, тогда как YAML молча использует последнее значение, если ключ встречается дважды. TOML, как правило, предпочтителен для конфигурации приложений, тогда как YAML чаще применяется в манифестах Kubernetes и определениях CI/CD-конвейеров, где востребованы поддержка нескольких документов и механизмы якорей/псевдонимов.
В чём разница между TOML и JSON?
JSON — формат обмена данными, предназначенный для взаимодействия машина-машина. TOML — формат конфигурации, рассчитанный на чтение и редактирование людьми. TOML поддерживает комментарии (строки, начинающиеся с #), встроенные типы даты/времени, многострочные строки и таблицы, уменьшающие глубину вложенности. JSON не поддерживает комментарии, не имеет типа даты и требует явной вложенности с фигурными скобками. JSON — правильный выбор для API-пейлоадов и хранения данных; TOML — правильный выбор для конфигурационных файлов, которые люди редактируют вручную.
Может ли TOML представить все структуры данных JSON?
TOML может представить большинство структур JSON, но есть граничные случаи. TOML не поддерживает значение null — эквивалента JSON null в TOML не существует. Ключи TOML должны быть строками, что соответствует ключам JSON-объектов. Массивы TOML в v0.5 были ограничены однородными типами, но TOML v1.0 допускает массивы смешанных типов. Глубоко вложенные JSON-объекты могут стать громоздкими в TOML, поскольку каждый уровень вложенности требует отдельного заголовка таблицы.
Какие проекты используют TOML для конфигурации?
Система сборки Cargo в Rust использует Cargo.toml в качестве манифеста пакета. Python принял pyproject.toml как стандартный файл конфигурации сборки через PEP 518 (2016) и PEP 621 (2020). Hugo, генератор статических сайтов, по умолчанию использует TOML для конфигурации. InfluxDB использует TOML для конфигурации сервера. Система модулей Go рассматривала TOML, но выбрала собственный формат; тем не менее многие Go-проекты по-прежнему используют TOML для конфигурации уровня приложения через библиотеки BurntSushi/toml и pelletier/go-toml.
Как TOML обрабатывает комментарии?
TOML поддерживает однострочные комментарии и комментарии в конце строки с помощью символа #. Всё, что следует после # до конца строки, игнорируется парсером. Комментарии не могут появляться внутри многострочных базовых строк или многострочных литеральных строк. При конвертации TOML в JSON комментарии отбрасываются, поскольку JSON не имеет синтаксиса комментариев. Это означает, что при конвертации TOML → JSON → TOML все комментарии из исходного файла будут потеряны.
Что такое массивы таблиц в TOML?
Массивы таблиц используют синтаксис [[двойных скобок]] для определения повторяющихся записей одной и той же структуры таблицы. Например, два вхождения [[servers]] создают массив с двумя объектами сервера. В JSON это отображается на массив объектов. Массивы таблиц часто используются для списков зависимостей, определений серверов или конфигураций плагинов, где каждая запись имеет одинаковый набор ключей.
Чувствителен ли TOML к пробельным символам?
TOML не чувствителен к отступам. Отступы носят исключительно косметический характер и не влияют на парсинг. Однако TOML требует переноса строки для разделения пар «ключ — значение» — нельзя поместить две пары на одной строке (кроме встроенных таблиц). Встроенные таблицы должны помещаться в одну строку и не могут содержать переносы строк. Такая конструкция исключает ошибки, связанные с отступами, которые типичны для YAML-файлов.
Что происходит со значениями дата/время TOML при конвертации в JSON?
В JSON нет встроенного типа datetime, поэтому значения дата/время из TOML конвертируются в строки ISO 8601. Смещённые значения дата/время (например, 2024-01-15T09:30:00Z) сохраняют смещение часового пояса в строковом представлении. Локальные значения дата/время, локальные даты и локальное время сериализуются как строки без информации о часовом поясе. Конвертация является потерями в том смысле, что исходное значение можно восстановить из строки, но потребитель JSON должен знать, что эти строки представляют даты, а не произвольный текст.