Конвертер JSON в TOML
Вставьте JSON-объект слева, получите TOML справа. Строгое соответствие спецификации через @iarna/toml. Без загрузки.
- Вставьте JSON-объект в текстовое поле слева.
- Нажмите «Преобразовать в TOML». Верхний уровень должен быть JSON-объектом — не массивом.
- Скопируйте или скачайте вывод TOML.
- Для списков записей используйте TOML-массив таблиц — сначала оберните в `{ items: [...] }`.
Что это делает?
Преобразует JSON-объект в документ, соответствующий TOML 1.0, через @iarna/toml. Вложенные объекты становятся заголовками `[section]`; массивы объектов — блоками массивов таблиц `[[items]]`; строки, числа, булевы и ISO 8601 строки даты-времени отображаются на примитивы TOML. Вывод сортируется к каноническому порядку — ключи появляются перед под-таблицами для совместимости со строгими TOML-парсерами.
Пример
Вход JSON:
{
"name": "Ada",
"active": true,
"address": {
"city": "London"
}
} Выход TOML:
name = "Ada"
active = true
[address]
city = "London" Типичные ловушки JSON → TOML
У TOML более строгие правила верхнего уровня, чем у JSON. Шаблоны ниже объясняют, почему JSON-значение, которое «должно работать», может не пройти.
- Массив на верхнем уровне. TOML не может представить массив JSON на верхнем уровне. Оберните его: `{"items": [...]}`. Результат становится массивом таблиц TOML под `[[items]]`.
- Скаляр на верхнем уровне. У голого `42` или `"hello"` JSON-документа нет ключа, к которому можно прикрепиться в TOML. Оберните в объект: `{"value": 42}`.
- null-значения. У TOML нет типа null. Сериализатор полностью опускает ключи, чьё JSON-значение равно null. Если нужно представить «явно ничего», используйте пустую строку `""` или предварительно согласованное значение-стрелку, в зависимости от вашего нижестоящего кода.
- Массивы смешанных типов. TOML 1.0 разрешает `[1, "two"]`, но устаревшие парсеры 0.5 — нет. Если ваш TOML должен ходить через инструменты 0.5, держите массивы однородными в JSON перед конвертацией.
- Ключи с точками в выводе TOML. JSON-ключ вроде `"my.key"` становится путём «точечного ключа» TOML, который TOML-парсеры интерпретируют как вложенный. Чтобы сохранить буквальную точку в имени ключа, сериализатор берёт его в кавычки: `"my.key" = ...` — но потребители всё равно могут парсить как путь.
- NaN / Infinity. TOML 1.0 поддерживает литералы `nan`, `inf`, `-inf`. JSON их не представляет — обычно они приходят как строки `"NaN"`, `"Infinity"` и т.д. Преобразуйте вручную, если нужны настоящие специальные float-значения TOML.
Часто задаваемые вопросы
Как представляются даты?
Даты JSON — это ISO 8601-строки, например `"2026-04-26T12:00:00Z"`. Сериализатор сохраняет их как строки в TOML — а не как нативные типы datetime. Чтобы получить нативный TOML datetime, вам понадобится предобработать и выдать значение с правильным маркером типа на стороне JavaScript.
Уплощаются ли глубоко вложенные объекты?
Нет — они становятся вложенными заголовками `[a.b.c]`. Каждый уровень вложенности становится точечно соединённым путём заголовка. Для очень глубоких структур вывод может иметь длинные строки заголовков; это просто способ TOML выражать глубину.
Сохранится ли порядок ключей?
В основном. Сериализатор канонизирует порядок, чтобы примитивы шли перед под-таблицами (правило TOML). Внутри каждого уровня сохраняется JSON-порядок вставки.
Как получить инлайн-таблицу TOML на выходе?
Никак — сериализатор всегда использует блочные заголовки `[section]`, никогда инлайн-таблицы. Если нужен инлайн-вывод, постобработайте результат. Инлайн-таблицы — это особенность читаемости TOML, а не другая форма данных.
Загружается ли мой JSON?
Нет. Всё работает в вашем браузере — ваш ввод парсится и сериализуется JavaScript на этой странице и не отправляется ни на какой сервер.
Можно ли сделать круг JSON → TOML → JSON?
Для поддерживаемых типов (строка, число, булево, вложенный объект, массив объектов) — да. Круги теряют null-значения (у TOML нет null) и могут нормализовать порядок ключей.