TOML в JSON
Cargo.toml у Rust, pyproject.toml у Python, config.toml у Hugo: формат TOML встречается в современной конфигурации повсюду, а многие инструменты по-прежнему понимают только JSON. Вставьте сюда TOML и получите аккуратно отформатированный JSON: секции [таблиц] становятся вложенными объектами, блоки [[массивов таблиц]] превращаются в массивы объектов, а даты проходят без изменений как строки. Парсер покрывает повседневное ядро TOML; его реальные ограничения (многострочные значения, встроенные таблицы, ключи с точками) честно перечислены ниже.
Как работает преобразование
-
1
Вставьте ваш TOML
Поместите текст в поле ввода и нажмите «Преобразовать в JSON». Комментарии #, занимающие всю строку, пропускаются автоматически.
-
2
Таблицы становятся объектами
Заголовок `[server.database]` превращается во вложенные объекты JSON, по уровню на каждое имя через точку.
-
3
Массивы таблиц становятся массивами
Блоки `[[users]]` собирают массив JSON, по одному объекту на блок.
-
4
Скалярные значения сохраняют тип
Строки в кавычках, простые десятичные целые и дробные числа, true/false становятся родными типами JSON; даты остаются строками ровно в том виде, как записаны.
-
5
Скопируйте JSON
Результат отформатирован с отступом в 4 пробела, ключи идут в исходном порядке, всё готово для копирования.
Как сопоставляются типы
| Значение TOML | Значение JSON | Пример |
|---|---|---|
| Строка (базовая или литеральная) | Строка | "hello" → "hello" |
| Целое (простое десятичное) | Число | 42 → 42 |
| Дробное (простое десятичное) | Число | 3.14 → 3.14 |
| Булево | Булево | true → true |
| Массив (в одну строку) | Массив | [1, 2, 3] → [1, 2, 3] |
| Таблица с ключами | Объект | [server] + port = 8080 → "server": {"port": 8080} |
| Массив таблиц | Массив объектов | [[users]] + name = "alice" → "users": [{"name": "alice"}] |
| Дата и время | Строка, как записана | 2026-04-18T10:00:00Z → "2026-04-18T10:00:00Z" |
Вывод всегда форматируется с отступом в 4 пробела, поэтому массивы и объекты занимают несколько строк; в таблице выше значения показаны в одну строку для наглядности. Порядок ключей сохраняется ровно таким, каким он записан в вашем TOML.
Разобранный пример
title = "My App"
[server]
host = "localhost"
port = 8080
[[users]]
name = "alice"
admin = true
превращается в:
{
"title": "My App",
"server": {
"host": "localhost",
"port": 8080
},
"users": [
{
"name": "alice",
"admin": true
}
]
}
Поддерживаемый TOML и реальные ограничения
Поддерживается: заголовки [таблиц], включая имена секций с точками, [[массивы таблиц]], пары ключ = значение в одну строку, базовые строки "..." с экранированием \n, \t и \", литеральные строки '...', простые десятичные целые и дробные числа, true/false, однострочные массивы (вложенность допустима), комментарии # на всю строку и даты, передаваемые как строки.
Не поддерживается, и что делать вместо этого:
- Многострочные строки (
"""или''') и многострочные массивы останавливают парсер с ошибкой. Сначала запишите значение в одну строку. - Встроенные таблицы не разворачиваются:
point = { x = 1, y = 2 }выходит строкой"{ x = 1, y = 2 }", а не объектом. Перепишите её отдельной секцией[point]. Классический случай: строки зависимостей в Cargo.toml вродеserde = { version = "1.0" }. - Ключи с точками слева от знака равенства остаются одним плоским ключом:
server.host = "a"даёт ключ"server.host"без вложенности. Используйте вместо этого заголовок[server]. При этом точечные[имена.секций]в заголовках вкладываются корректно. - Комментарии после значения не отрезаются:
port = 8080 # mainпревращается в строку"8080 # main". Держите комментарии на отдельных строках. - Числовые форматы сложнее простых десятичных не распознаются:
1_000,0xFF,5e2,+99,infиnanвыходят строками в кавычках. Пишите1000,255,500,99. - Экранирование
\uXXXXв базовых строках не декодируется. Вставьте вместо него сам символ.
Для полного документа TOML 1.0 возьмите консольный конвертер вроде toml2json или загрузите файл через tomllib в Python и выгрузите JSON оттуда.
Где это пригодится
- Быстрая проверка фрагмента TOML в виде JSON во время отладки.
- Передача простых значений конфигурации линтерам, скриптам и инструментам инвентаризации, которые принимают только JSON.
- Генерация тестовых JSON-фикстур из TOML-заметок, которые проще писать от руки.
- Перенос небольших плоских конфигураций, каких много среди
config.tomlдля Hugo.
Заметки о пути туда и обратно
- Комментарии не выживают никогда: в JSON просто нет синтаксиса комментариев.
- Даты остаются строками; последующему коду придётся снова разбирать их в объекты дат.
- Большие числа: в тексте JSON целые сохраняются как 64-битные значения, но потребители на JavaScript теряют точность выше 2^53. Осторожнее с наносекундными метками времени и числовыми идентификаторами.
- Порядок ключей этот конвертер сохраняет как в исходнике; другие инструменты JSON могут пересортировать ключи при повторной выдаче документа.
Обратное направление
JSON → TOML: вот сложный маршрут, ведь в JSON есть конструкции (глубокая анонимная вложенность, null), которых в TOML нет или которые он обрабатывает иначе. Большинство сценариев туда-обратно требуют ручной доводки на стороне TOML.
Часто задаваемые вопросы
Нет. В JSON нет синтаксиса комментариев, поэтому комментарии # на всю строку просто пропускаются. Важное предупреждение: комментарий после значения не отрезается, и port = 8080 # main превращается в строку “8080 # main”. Перед преобразованием держите комментарии на отдельных строках.
Нет. Покрыто повседневное ядро: таблицы с точечными именами секций, массивы таблиц, пары ключ = значение в одну строку, строки в кавычках, простые десятичные числа, булевы значения, однострочные массивы и комментарии на всю строку. Многострочные строки и массивы, встроенные таблицы, ключи с точками и форматы чисел вроде 1_000 или 0xFF не поддерживаются. Для документов по полной спецификации используйте консольный инструмент, например toml2json или tomllib в Python.
Обычные конфигурационные файлы преобразуются мгновенно. Конвертация выполняется на нашем сервере, поэтому огромные документы упираются в размер запроса; для TOML в несколько мегабайт лучше подойдёт консольный конвертер.
Да, этот конвертер работает на сервере: TOML уходит на наш сервер по HTTPS, преобразуется там и возвращается в том же ответе. Содержимое после этого не хранится; остаётся только анонимный счётчик использования. Не вставляйте секреты вроде паролей или API-ключей.
Сопутствующие инструменты
Справочная таблица ASCII
Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.
Справочник символов HTML
Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.
Смешивание цветов
Смешайте два HEX-цвета в 2-20 равномерных образцов. Каждый промежуточный цвет показывается как HEX-код в верхнем регистре, включая оба края.
Справочник сочетаний клавиш
Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.
Счетчик FPS
Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.
Генератор случайных букв
Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.
Инструмент доступен на других языках
- TOML เป็น JSON [TH]
- TOML a JSON [ES]
- TOML na JSON [PL]
- TOMLからJSONへ [JA]
- TOML para JSON [PT]
- TOML till JSON [SV]
- TOML sang JSON [VI]
- من TOML إلى JSON [AR]
- TOML en JSON [FR]
- TOML zu JSON [DE]
- TOML ke JSON [ID]
- TOML to JSON [KO]
- TOML naar JSON [NL]
- TOML'dan JSON'a [TR]
- TOML 至 JSON [ZH]
- TOML to JSON [EN]
- TOML in JSON [IT]