TOML (Tom's Obvious Minimal Language) — формат конфигурационных файлов, созданный для людей. Он однозначно отображается в хэш-таблицу, поддерживает вложенные таблицы, типизированные значения и встроенные комментарии. Многие инструменты и фреймворки используют TOML как основной формат конфигурации: проекты на Rust опираются на Cargo.toml, упаковка Python использует pyproject.toml, а статические сайты Hugo настраиваются через config.toml. Конвертация TOML в JSON онлайн позволяет преобразовать эти конфигурационные файлы в формат, который нативно поддерживается практически любым языком программирования, API и конвейером обработки данных.
JSON (JavaScript Object Notation), определённый стандартом RFC 8259, является наиболее распространённым форматом обмена данными. Тогда как TOML ставит во главу угла читаемость благодаря минималистичному синтаксису и поддержке комментариев, JSON ориентирован на машинную совместимость. Конвертер TOML в JSON устраняет это различие: он разбирает входные данные TOML согласно спецификации TOML v1.0.0 и формирует структурно эквивалентный JSON-документ. Конвертация сохраняет все данные: строки, целые числа, числа с плавающей точкой, булевы значения, массивы и таблицы напрямую отображаются в соответствующие типы JSON.
TOML имеет четыре собственных типа даты и времени, которые JSON не может представить напрямую: date-time со смещением, локальный date-time, локальная дата и локальное время. В JSON нет типа даты, поэтому при конвертации эти значения сериализуются как строки ISO 8601.
Зачем использовать конвертер TOML в JSON?
Конфигурационные файлы в формате TOML нередко нужно передавать в системы, которые принимают только JSON. Вместо того чтобы переписывать файл вручную или устанавливать библиотеку парсера локально, браузерный конвертер выполняет преобразование за секунды.
🔒
Обработка данных без передачи на сервер
Разбор и конвертация ваших данных TOML выполняются полностью в браузере. Ничего не отправляется на сервер, поэтому конвертировать конфигурационные файлы, содержащие ключи API, учётные данные базы данных или внутренние имена хостов, совершенно безопасно.
⚡
Мгновенная конвертация
Вставьте TOML и сразу получите отформатированный JSON. Не нужно устанавливать пакеты Node.js, библиотеки Python или CLI-инструменты только ради разового преобразования формата.
🔀
Полная поддержка TOML v1.0.0
Конвертер обрабатывает все типы данных TOML, включая составные ключи, встроенные таблицы, массивы таблиц, многострочные строки и значения даты и времени. Граничные случаи, в которых ошибается ручная конвертация, обрабатываются корректно.
📋
Без регистрации
Откройте страницу, вставьте TOML и скопируйте результат JSON. Никакой регистрации, лимитов запросов и отслеживания использования. Инструмент работает одинаково при каждом посещении.
Сценарии использования TOML в JSON
Фронтенд-разработка
Конвертируйте метаданные Cargo.toml из Rust WASM-проекта в JSON для использования в JavaScript-скрипте сборки или при генерации package.json.
Бэкенд-разработка
Преобразуйте конфигурацию приложения в формате TOML в JSON для внедрения в среды, требующие JSON-конфигурации, — например, переменные окружения AWS Lambda или метки контейнеров Docker.
DevOps и CI/CD
Конвейерные инструменты, такие как GitHub Actions и GitLab CI, нередко работают с JSON-входными данными. Конвертируйте конфигурации инструментов на основе TOML (rustfmt.toml, taplo.toml) в JSON для шагов линтинга или валидации.
QA и тестирование
Генерируйте JSON-фикстуры для тестов из TOML-файлов. TOML удобнее поддерживать как источник тестовых данных благодаря поддержке комментариев и читаемому синтаксису, тогда как тестовые фреймворки часто ожидают JSON на входе.
Инженерия данных
При миграции конфигурации между системами TOML-файлы одной платформы (например, InfluxDB, Telegraf) могут потребоваться в виде JSON-документов для API или инструмента импорта другой платформы.
Обучение и образование
Студенты, изучающие форматы данных, могут вставлять примеры TOML и наглядно видеть, как таблицы становятся вложенными объектами, как массивы таблиц превращаются в JSON-массивы и как типы даты TOML отображаются в строки.
Справочник по соответствию типов TOML и JSON
Каждый тип TOML имеет прямой эквивалент в JSON, за единственным исключением: значения даты и времени. Таблица ниже показывает, как каждый тип TOML конвертируется в JSON. Это соответствие следует спецификации TOML v1.0.0 и соответствует поведению стандартных парсеров: tomllib (Python), toml-rs (Rust) и @iarna/toml (Node.js).
Тип
Синтаксис TOML
Результат JSON
String
"value"
"value"
Integer
42
42
Float
3.14
3.14
Boolean
true / false
true / false
Offset Date-Time
1979-05-27T07:32:00Z
"1979-05-27T07:32:00Z"
Local Date-Time
1979-05-27T07:32:00
"1979-05-27T07:32:00"
Local Date
1979-05-27
"1979-05-27"
Local Time
07:32:00
"07:32:00"
Array
[1, 2, 3]
[1, 2, 3]
Table
[section]
{ "section": {} }
Inline Table
{ key = "val" }
{ "key": "val" }
Array of Tables
[[items]]
"items": [{}]
Целые числа TOML поддерживают символы подчёркивания для удобочитаемости (например, 1_000_000), а также шестнадцатеричные (0xDEADBEEF), восьмеричные (0o755) и двоичные (0b11010110) литералы. Все они конвертируются в обычные десятичные числа в JSON. TOML также поддерживает значения бесконечности и NaN для чисел с плавающей точкой, однако они не имеют представления в JSON и вызовут ошибку конвертации в строгом режиме.
Примеры кода
Рабочие примеры конвертации TOML в JSON на четырёх языках. Каждый пример читает TOML-файл, разбирает его и выводит отформатированный JSON.
import tomllib # Python 3.11+ (standard library)
import json
with open('config.toml', 'rb') as f:
data = tomllib.load(f)
print(json.dumps(data, indent=2, default=str))
# Dates become strings: "1979-05-27"
# Arrays of tables become JSON arrays of objects
Go
package main
import (
"encoding/json"
"fmt"
"os"
"github.com/BurntSushi/toml"
)
func main() {
var data map[string]any
_, err := toml.DecodeFile("config.toml", &data)
if err != nil {
panic(err)
}
out, _ := json.MarshalIndent(data, "", " ")
fmt.Println(string(out))
}
Что происходит с комментариями TOML при конвертации?
Комментарии TOML (строки, начинающиеся с #) удаляются при конвертации. JSON не поддерживает комментарии, поэтому сохранить их в выходных данных невозможно. Если вам нужно сохранить комментарии, рассмотрите JSONC (JSON с комментариями) в качестве целевого формата.
Может ли конвертация TOML в JSON привести к потере данных?
Для стандартных TOML-документов данные не теряются. Все строки, числа, булевы значения, массивы и таблицы имеют прямые эквиваленты в JSON. Единственное преобразование затрагивает значения даты и времени, которые становятся строками ISO 8601 в JSON. Два граничных случая могут вызвать проблемы: TOML поддерживает бесконечность и NaN для чисел с плавающей точкой, не имеющих представления в JSON, а очень большие целые числа могут превышать пределы точности парсера JSON (2^53 - 1 в JavaScript).
Как массивы таблиц TOML представлены в JSON?
Синтаксис [[двойных скобок]] в TOML определяет массив таблиц. Каждый блок [[section]] добавляет новый объект в JSON-массив. Например, два блока [[fruits]] становятся JSON-массивом из двух объектов: "fruits": [{...}, {...}]. Синтаксис двойных скобок — один из наиболее сложных для понимания аспектов TOML; JSON-результат делает структуру очевидной.
Является ли конвертация обратимой? Можно ли вернуться из JSON в TOML?
Структурно — да. Любой JSON-объект можно представить как таблицу TOML, а JSON-массивы отображаются в массивы TOML. Однако специфичные для TOML возможности — комментарии, группировка составных ключей и форматирование встроенных таблиц — теряются в процессе первоначальной конвертации TOML в JSON и не могут быть восстановлены. Обратное преобразование даст корректный, но потенциально менее читаемый TOML.
В чём разница между TOML и JSON для конфигурационных файлов?
TOML создавался для конфигурации: он поддерживает комментарии, имеет более читаемый синтаксис для вложенных структур, различает целые числа и числа с плавающей точкой, а также включает собственные типы даты и времени. JSON создавался для обмена данными между программами. JSON шире поддерживается инструментами и API, но TOML легче читать и редактировать людям. Многие проекты используют TOML для исходной конфигурации и конвертируют в JSON для развёртывания.
Как инструмент обрабатывает составные ключи, например server.host?
Составные ключи в TOML (например, server.host = "localhost") создают вложенные объекты в JSON: {"server": {"host": "localhost"}}. Это эквивалентно определению таблицы [server] с ключом host. Конвертер автоматически разворачивает составные ключи в полную вложенную структуру.
Почему мой TOML-файл не конвертируется?
Распространённые причины: отсутствие кавычек вокруг строковых значений (TOML требует их обязательного наличия), использование табуляции для отступов внутри многострочных базовых строк, дублирование определений ключей, а также смешивание составных ключей с явными заголовками таблиц для одного и того же пути. Конвертер отображает сообщение об ошибке парсера с номером строки, чтобы помочь локализовать проблему.