JSON в TOML
Бесплатный инструмент для быстрого преобразования JSON-объектов в конфигурацию TOML v1.0. Автоматически строит вложенные таблицы ([section]), подтаблицы ([a.b]) и массивы таблиц ([[items]]), поэтому им удобно готовить шаблоны Cargo.toml и pyproject.toml. Вся обработка выполняется локально в браузере.
Похожие
Что такое TOML и зачем конвертировать JSON в TOML?
TOML расшифровывается как Tom's Obvious, Minimal Language («очевидный минимальный язык Тома») — формат конфигурационных файлов, представленный сооснователем GitHub Томом Престон-Вернером в 2013 году. Цели дизайна: очевидный синтаксис, минимализм, удобство чтения для человека и однозначность формулировок. Версия TOML 1.0 стала стабильной в 2021 году (toml-lang/toml) и сегодня является форматом конфигов по умолчанию для Cargo (Rust), PEP 621 в Python (pyproject.toml), Hugo, Prettier, Deno, Taplo и многих других инструментов.
У TOML в сценарии конфигов есть несколько явных преимуществ перед JSON и YAML. ① Нет ловушки отступов YAML: в YAML иерархия задаётся отступами, и ошибка в отступе полностью меняет смысл конфига (например, list превращается в string). В TOML уровни объявляются явно через [table] — двусмысленности исключены. ② TOML удобнее JSON для конфигов: кавычки и фигурные скобки JSON в сложных конфигах утомительны, а TOML с key = value читается чище, плюс нативно поддерживает комментарии. ③ Строгая система типов: TOML различает integer, float, string, boolean, datetime, array и table — нет JSON-неоднозначности «число это integer или float» и нет проблемы Norway из YAML 1.1, где NO становится булевым false.
Ядро TOML составляют четыре конструкции. ① Пары ключ-значение (key = value) для базовых настроек. ② Таблицы (Table) — именованные группы, объявляемые через [name], с поддержкой вложенности ([a.b.c]). ③ Массивы таблиц (Array of Tables) — списки однотипных объектов через [[name]], часто используются для multi-environment конфигов, списков плагинов и зависимостей. ④ Массивы (Array) — базовые типы можно записывать inline ([1, 2, 3]) или многострочно. Инструмент при конвертации распознаёт структуру JSON и сам выбирает подходящий TOML-синтаксис.
Типичные причины перехода с JSON на TOML. ① Проект мигрирует с экосистемы Node.js на Rust/Python и конфиги нужно привести к TOML. ② Команда переводит разрозненные JSON-конфиги на TOML, чтобы избавиться от тяжёлой вложенности JSON за счёт секций [section]. ③ TOML заменяет YAML и устраняет странные баги из-за отступов. ④ В CI/CD входные JSON-метаданные нужно превращать в TOML для последующих шагов. Инструмент закрывает потребности во всех этих сценариях.
По сути конвертация — это отображение дерева синтаксиса: JSON.parse() превращает текст в JavaScript-объект (AST), затем идёт рекурсивный обход узлов — строки, числа, булевы значения и null превращаются в соответствующие TOML-скаляры, массивы разделяются на inline-массивы и массивы таблиц в зависимости от типа элементов, а вложенные объекты становятся таблицами или подтаблицами. На выходе — текст по правилам TOML. Такое структурное отображение гарантирует синтаксическую корректность результата на 100%.
Варианты использования
- Когда нужно быстро подготовить черновик Cargo.toml для проекта на Rust
- Когда вы переносите настройки проекта Python в pyproject.toml
- Когда конфигурации Hugo, Deno или Prettier нужно перевести из JSON в TOML
- Когда команда унифицирует формат CI/CD или DevOps-конфигов вокруг TOML
- Когда хочется сравнить существующий JSON с TOML и выбрать более удобный формат
- Когда вы изучаете синтаксис TOML и хотите увидеть реальные примеры вложенных таблиц и массивов таблиц
Как использовать
- Вставьте JSON в левый редактор или загрузите файл .json / .txt. При необходимости откройте готовый пример
- Инструмент сразу разберёт JSON и сгенерирует TOML v1.0 в правой панели
- Если появится ошибка синтаксиса, проверьте сообщение и при необходимости сначала исправьте JSON
- Скопируйте результат или скачайте его как config.toml для дальнейшего использования
Функции
- Генерирует TOML по спецификации v1.0, который можно сразу использовать в Cargo, Poetry, Hugo, Prettier и других TOML-совместимых инструментах
- Автоматически преобразует многоуровневые JSON-объекты в таблицы TOML вида [a] и [a.b.c], сохраняя читаемую структуру
- Массивы объектов переводятся в массивы таблиц [[items]], что удобно для списков зависимостей, хостов и окружений
- Экранирует кавычки, обратные слэши, переводы строк и табы по правилам TOML
- Корректно сопоставляет строки, числа, булевы значения и null с типами TOML; null заменяется на пустую строку ""
- Показывает результат в реальном времени: вставляете JSON слева и сразу видите TOML справа
- Позволяет загрузить готовый пример со вложенностью, массивами и массивами таблиц для быстрой проверки
- Поддерживает загрузку файлов .json / .txt и скачивание результата как config.toml
- На ПК можно менять ширину панелей перетаскиванием, а последние 200 записей истории сохраняются автоматически
- После конвертации можно перейти к форматированию JSON и продолжить очистку или проверку исходных данных
- Всё выполняется локально в браузере, поэтому чувствительные конфигурации не отправляются на сервер
Часто задаваемые вопросы
Как преобразовать JSON в конфигурационный файл TOML?
Вставьте JSON в поле ввода слева — инструмент автоматически разберёт JSON-объект и преобразует его в конфиг по спецификации TOML v1.0. Пары ключ-значение превращаются в key = value, вложенные объекты — в таблицы TOML ([section]) и подтаблицы ([a.b]), а массивы автоматически становятся inline-массивами или массивами таблиц ([[items]]) в зависимости от содержимого. Нажмите кнопку «Пример», чтобы загрузить вложенный образец, а готовый результат можно скачать как config.toml для вашего проекта.
Для каких задач подходят TOML, YAML и JSON?
JSON идеален для обмена данными в API и передачи между фронтендом и бэкендом — это фактический стандарт для REST-интерфейсов. YAML подходит для сложных структур данных и CI/CD-конфигов (GitHub Actions, Ansible, Kubernetes): высокая читаемость, поддержка комментариев и нескольких документов. TOML отлично подходит для явных конфигурационных файлов (Rust/Cargo, Python pyproject, Hugo, Prettier): лаконичный синтаксис, минимум двусмысленностей, нет ловушек с отступами. Универсального победителя нет — для конфигов лучше TOML, для CI/CD — YAML, для API-данных — JSON.
Как в TOML представить вложенные JSON-объекты?
В TOML для вложенных структур используются таблицы (Table). Один уровень вложенности, например {"database": {"host": "localhost"}}, превращается в [database] host = "localhost". Многоуровневая вложенность вида {"server": {"ssl": {"enabled": true}}} даёт [server.ssl] enabled = true. Инструмент автоматически распознаёт уровень вложенности и формирует нужный путь в заголовке таблицы — ничего не нужно править вручную.
Как преобразуются JSON-массивы в TOML?
TOML различает два синтаксиса массивов. ① Массивы базовых типов (например, ["a", "b", 1, 2]) становятся inline-массивами key = ["a", "b", 1, 2] — элементы через запятую в квадратных скобках. ② Массивы объектов (например, [{"name": "primary"}, {"name": "replica"}]) превращаются в массивы таблиц [[items]] — перед каждым объектом добавляется заголовок [[items]], а поля идут ниже. Инструмент автоматически выбирает подходящий синтаксис TOML в зависимости от типа массива.
Можно ли использовать сгенерированный TOML сразу в Cargo.toml?
Да. Инструмент строго следует официальной спецификации TOML v1.0 (github.com/toml-lang/toml), и сгенерированный TOML сразу подходит для Cargo (менеджер пакетов Rust), Poetry/pyproject (Python), Hugo (статические сайты), Prettier, Deno, Taplo и любых других инструментов с поддержкой TOML. Обратите внимание: если в Cargo.toml нужны конкретные секции [package] / [dependencies], добавьте соответствующие поля (name, version, edition, таблицы зависимостей) вручную по правилам Cargo.
Во что превращаются значения null в JSON?
В TOML нет типа null, поэтому JSON-значение null превращается в пустую строку "" — это самое распространённое эквивалентное представление. Если ваш потребитель TOML предъявляет особые требования к null-полям (например, поле optional в [dependencies]), после конвертации поправьте соответствующую строку вручную.
Что происходит с двойными кавычками и переносами строк в строках?
Строки в TOML обязательно заключаются в двойные кавычки, а внутренние двойные кавычки, обратные слэши, переносы строк (\n), возврат каретки (\r) и табуляция (\t) должны экранироваться по правилам TOML. Инструмент делает это автоматически: например, He said "Hello" из JSON в TOML превращается в He said \"Hello\"\n, а переносы в многострочных строках становятся \n. Экранировать вручную не нужно — результат корректно читается любым TOML-парсером.
Поддерживает ли сгенерированный TOML типы даты и времени?
Инструмент принимает на вход только JSON, а в стандарте JSON нет нативного типа даты-времени (обычно используются строки ISO 8601 вида "2026-01-01T00:00:00Z"). После конвертации такие значения остаются строками (key = "2026-01-01T00:00:00Z"). Если вам нужны нативные TOML-типы local datetime / offset datetime, замените строку на голый TOML-литерал даты (например, 2026-01-01T00:00:00) вручную.
Конвертация идёт в браузере — данные куда-то отправляются?
Нет. И парсинг JSON, и генерация TOML, и экранирование строк выполняются локально в движке JavaScript вашего браузера — данные не уходят ни на какой сервер, инструмент работает и без интернета. Можно спокойно конвертировать JSON с паролями БД, API-ключами и внутренними адресами.
Устранение неполадок
JSON выдаёт «Unexpected token» — что делать?
Это синтаксическая ошибка JSON. Типичные причины: ① лишняя запятая в конце (trailing comma), например {"a":1,}; ② строки в одинарных кавычках вида {'a':1} (в JSON нужны двойные); ③ ключи без кавычек, например {a:1}; ④ комментарии // или /* */ (стандарт JSON их не поддерживает). Воспользуйтесь нашим инструментом исправления JSON — он автоматически исправит эти распространённые ошибки, а затем снова вставьте исправленный JSON.
Cargo выдаёт «invalid TOML» на сгенерированном файле — в чём дело?
Обычно это конфликт имён полей или отсутствие обязательных полей. TOML-парсеры очень строги к путям заголовков таблиц, дублирующимся ключам и экранированию символов. Проверьте: ① нет ли в одной области видимости повторяющихся ключей; ② корректно ли экранированы спецсимволы в строках (двойные кавычки, обратный слэш, переносы строк); ③ не слишком ли глубокая вложенность (TOML 1.0 рекомендует не больше 5 уровней); ④ нет ли пропущенной обязательной секции [package] для Cargo. Синтаксически вывод инструмента корректен на 100%, проблема обычно на стороне потребителя (например, имена полей не соответствуют требованиям Cargo).
Массив объектов превратился в inline-массив, а не в массив таблиц — почему?
В inline-массив ["a","b"] JSON-конвертер превращает только массивы, где все элементы — базовые типы (строка/число/булево/null). Массивы объектов (например, [{"name":"x"}]) становятся массивами таблиц [[items]]. Если массив объектов определён как inline — значит, в нём присутствуют элементы других типов. Проверьте: ① не попали ли в массив строка или число; ② не нарушена ли вложенность.
Некоторые ключи в результате взяты в кавычки — как убрать?
TOML допускает в именах ключей только буквы, цифры, подчёркивание и дефис ([A-Za-z0-9_-]). Если в JSON-ключе есть спецсимволы (пробел, точка, кириллица, эмодзи, зарезервированные слова), инструмент автоматически берёт ключ в двойные кавычки, чтобы TOML оставался валидным: например, {"my key": 1} превратится в "my key" = 1. Если ваш инструмент не принимает ключи в кавычках, переименуйте их в допустимые символы (A-Z a-z 0-9 _ -) и повторите конвертацию.
Браузер тормозит на больших файлах — что делать?
Инструмент оптимизирован под конвертацию в реальном времени, но очень большие файлы (более 1 МБ, сотни тысяч строк) всё же могут нагружать систему. Рекомендации: ① сначала проверьте валидность JSON инструментом форматирования; ② разбейте файл на части (например, по ключам верхнего уровня); ③ убедитесь, что у браузера достаточно памяти; ④ для совсем больших конфигов (10 МБ+) лучше подходят CLI-инструменты вроде taplo или tomlq. Этот инструмент рассчитан на повседневные конфиги — от килобайт до нескольких сотен килобайт.
Глоссарий
- TOML
- Tom's Obvious, Minimal Language — язык формата, созданный для конфигурационных файлов: лаконичный синтаксис без двусмысленностей; стандартный формат для Rust Cargo, Python pyproject и Hugo.
- Table (таблица)
- Именованная группа в TOML, объявляемая через [name]; аналог JSON-объекта с поддержкой вложенности через точку, например [server.ssl].
- Array of Tables (массив таблиц)
- Список однотипных объектов в TOML, объявляемый через [[name]]; каждый блок [[name]] содержит все поля объекта. Аналог JSON-массива объектов.
- Inline Table (встроенная таблица)
- Синтаксис TOML 1.0, объявляющий простой объект в одной строке через { key = value, key = value }; подходит для плоских объектов без необходимости именования.
- Cargo.toml
- Стандартный конфигурационный файл проекта на Rust: метаданные пакета, dependencies, dev-dependencies, features и т. д., формат TOML.
- pyproject.toml
- Стандартный конфигурационный файл проекта на Python (PEP 621): build-system, метаданные проекта, dependencies, секции tool (black, pytest, mypy и др.).
- TOML v1.0
- TOML 1.0 — стабильная версия, официально выпущенная в 2021 году. Инструмент строго следует этой спецификации (github.com/toml-lang/toml/blob/main/toml.md).
- Вложенный JSON-объект
- Объект в JSON, содержащий другие объекты. Соответствует TOML-таблице ([section]) или подтаблице ([a.b.c]).
- TOML-экранирование
- В TOML-строках двойные кавычки, обратные слэши, переносы строк и другие спецсимволы нужно экранировать обратным слэшем (\", \\, \n). Инструмент делает это автоматически.
- Конфигурационный файл (Config File)
- Файл с настройками, который приложение читает при запуске; отделён от кода для удобства изменений. TOML — один из де-факто стандартов среди конфигов.
Сопоставление типов JSON и TOML
Инструмент преобразует типы JSON в TOML по следующим правилам:
| Тип JSON | Тип TOML | Синтаксис TOML | Пояснение |
|---|---|---|---|
| string | string | key = "value" | Строки TOML всегда в двойных кавычках |
| integer | integer | key = 8080 | Целые числа без десятичной точки |
| float | float | key = 3.14 | Дробные числа должны содержать точку |
| boolean | boolean | key = true | В TOML допускаются только true / false в нижнем регистре |
| null | string (пусто) | key = "" | В TOML нет null — используется пустая строка |
| array[primitive] | array | key = ["a", "b"] | Массивы базовых типов в inline-скобках |
| array[object] | array of tables | [[items]]
key = value | Массивы объектов через [[name]] |
| object | table | [name]
key = value | Объекты объявляются таблицей [name] |
Таблица экранирования строк TOML
Спецсимволы, которые нужно экранировать в строках TOML:
| Исходный символ | После экранирования | Название | Пример |
|---|---|---|---|
" | \" | Двойная кавычка | Вложенные двойные кавычки в строке |
\ | \\ | Обратный слэш | Путь Windows C:\Users |
перенос | \n | Newline | Сжатие многострочного текста |
табуляция | \t | Tab | Поля с табуляцией |
возврат каретки | \r | Carriage Return | Windows-перевод строки CRLF |
\b | \b | Backspace | Символ возврата |
\f | \f | Form Feed | Символ перевода страницы |
U+0000 | \u0000 | Unicode 0 | Управляющие символы нужно экранировать через \u |
Сравнение JSON и TOML на примерах
Входные данные JSON со сложной структурой и соответствующий TOML на выходе:
| Структура | Пример |
|---|---|
| JSON вход | { "name": "app", "port": 8080 } |
| TOML выход | name = "app"
port = 8080 |
| JSON вход | { "server": { "host": "0.0.0.0", "port": 443 } } |
| TOML выход | [server]
host = "0.0.0.0"
port = 443 |
| JSON вход | { "hosts": [{"ip":"10.0.0.1"},{"ip":"10.0.0.2"}] } |
| TOML выход | [[hosts]]
ip = "10.0.0.1"
[[hosts]]
ip = "10.0.0.2" |
Privacy & Security
Разбор JSON, генерация TOML, экранирование строк и чтение файлов выполняются локально в JavaScript вашего браузера. Исходный JSON и готовый TOML не отправляются на сервер и не сохраняются для анализа. Поэтому инструмент подходит даже для конфигураций с паролями, API-ключами и внутренними адресами. Локальная история хранится только в localStorage браузера и удаляется после очистки кэша.
Authoritative References
- toml-langОфициальная спецификация TOML v1.0
- GitHubРепозиторий TOML на GitHub
- WikipediaTOML — Википедия
- Rust официальныйСправка по полям Cargo.toml
- JSON Compress
- CSV в JSON
- JSON в CSV
- JSON Diff
- JSON Escape / Unescape
- Сглаживание JSON
- Форматтер JSON
- Генератор JSON
- JSONPath Запрос
- Объединение JSON
- Восстановление JSON
- Валидатор JSON Schema
- Сортировка JSON
- JSON Stringify
- JSON в HTML
- JSON в Java
- JSON в Markdown
- JSON в SQL
- JSON в TOML
- JSON в TypeScript
- XML в JSON
- Преобразовать JSON в XML
- YAML в JSON
- JSON → YAML Конвертер
- JSON в Go
- JSON в Rust
- JSON в Swift
- JSON в C#
- JSON в C++
- JSON в PHP
- JSON в Python