Конвертировать JSON в формат TOML — Numio
Преобразует JSON-объект в TOML. Вложенные объекты становятся секциями [table], массивы объектов — [[array of tables]], а ключи со значением null отбрасываются, так как в TOML нет null.
Перевод JSON-конфигурации в синтаксис pyproject.toml, Cargo.toml, wrangler.toml или конфигурации Hugo.
Когда пригодится
- Перевод JSON-конфигурации в синтаксис pyproject.toml, Cargo.toml, wrangler.toml или конфигурации Hugo.
- Перенос настроек, сгенерированных скриптом в виде JSON, в конфигурационный файл на TOML.
Как пользоваться
- Вставьте JSON-объект (корень должен быть объектом, а не массивом) в левый редактор или откройте файл в кодировке UTF-8 кнопкой загрузки файла.
- Проверьте TOML справа: сначала идут скалярные ключи, затем секции [table] и [[array]].
- Скопируйте результат и сверьте его с документированными ключами целевого инструмента, прежде чем заменять конфигурацию.
JSON-объект
{
"title": "My App",
"port": 8080,
"debug": false,
"owner": { "name": "Ada", "since": "2024-01-05T10:00:00Z" },
"servers": [
{ "host": "a.example.com", "weight": 3 },
{ "host": "b.example.com", "weight": 1 }
],
"ports": [80, 443]
}TOML
title = "My App" port = 8_080 debug = false ports = [ 80, 443 ] [owner] name = "Ada" since = "2024-01-05T10:00:00Z" [[servers]] host = "a.example.com" weight = 3 [[servers]] host = "b.example.com" weight = 1
Подробности и ограничения
Целые числа от 1000 и выше получают разделители-подчёркивания (8080 становится 8_080). Это валидный TOML, который разбирается в то же число.
Строки с датами остаются строками в кавычках; в JSON нет типа даты, поэтому значения datetime TOML не создаются.
Ключи со значением null молча опускаются, а 1.0 из JSON записывается как целое 1.
Работает в браузере на @iarna/toml. Список, где объекты смешаны с другими значениями, отклоняется, потому что массивы таблиц TOML не могут их содержать. Подтаблицы выводятся с отступом в два пробела; TOML его игнорирует.
FAQ
Можно ли преобразовать JSON-массив на верхнем уровне?
Нет. TOML-документ должен быть таблицей, поэтому страница сообщает, что JSON является массивом, и предлагает обернуть его в объект, например {"items": [...]}.
Что происходит со значениями null?
Ключ отбрасывается. {"a": null} даёт пустой вывод. Если целевой инструмент ожидает ключ, используйте пустую строку или удалите ключ осознанно.
Почему в числах есть подчёркивания?
Сериализатор форматирует большие целые числа с разделителями разрядов _, что допускает спецификация TOML. Любой парсер TOML читает 8_080 как 8080.