ToolDeck

JSON to TOML

Конвертировать JSON в формат TOML

Попробовать пример

Ввод JSON

Вывод TOML

Работает локально · Безопасно вставлять секреты
Результат TOML появится здесь…

Что такое конвертация JSON в TOML?

Конвертация JSON в TOML преобразует данные из формата JavaScript Object Notation в Tom's Obvious Minimal Language. JSON использует фигурные скобки, квадратные скобки и ключи в кавычках для представления структурированных данных. TOML использует плоский синтаксис «ключ-значение» с заголовками секций (называемых таблицами), который читается как INI-файл, но со строгой типизацией. TOML был разработан специально для конфигурационных файлов, где удобочитаемость для человека важнее машинного обмена данными.

TOML стал стандартным форматом конфигурации для Rust (Cargo.toml), пакетирования Python (pyproject.toml), статических сайтов Hugo, настроек развёртывания Netlify и многих инструментов командной строки. Когда исходные данные существуют в формате JSON — из ответа API, экспортированного конфига или сгенерированного файла — а целевая система ожидает TOML, нужен конвертер, который преобразует объекты JSON в таблицы TOML, массивы JSON в массивы TOML и точно сохраняет каждый тип данных.

Конвертация JSON в TOML онлайн — это самый быстрый способ создать корректный TOML из существующих данных JSON. Конвертер автоматически обрабатывает сопоставление типов: строки JSON становятся строками TOML, числа JSON — целыми числами или числами с плавающей точкой TOML, булевы значения JSON отображаются напрямую, а объекты JSON становятся таблицами TOML. Исключение составляет null — в TOML нет типа null, поэтому значения null либо опускаются, либо преобразуются в пустые строки в зависимости от конвертера.

Почему стоит использовать этот конвертер JSON в TOML?

TOML — это то, что ожидают конфигурационные файлы; JSON — то, что производят API и инструменты. Этот конвертер устраняет разрыв между двумя форматами без ручного переписывания данных.

Мгновенная конвертация
Вставьте JSON и сразу получите результат в TOML. Конвертация выполняется по мере ввода без обращений к серверу и загрузки файлов.
🔒
Обработка с приоритетом конфиденциальности
Вся конвертация происходит локально в вашем браузере. Секреты конфигурации, ключи API и учётные данные базы данных из вашего JSON никогда не покидают ваше устройство.
🔀
Полная поддержка структур
Вложенные объекты становятся таблицами TOML, массивы объектов — массивами таблиц ([[table]]), а массивы смешанных типов обрабатываются корректно.
📋
Без регистрации
Откройте страницу и конвертируйте. Никакой регистрации, расширений для установки и зависимостей CLI. Работает на любом устройстве с современным браузером.

Сценарии использования JSON to TOML

Конфигурация проектов Rust
Cargo.toml определяет зависимости, функции и параметры сборки для проектов Rust. Конвертируйте списки зависимостей в формате JSON или сгенерированные конфиги в формат Cargo.toml напрямую.
Пакетирование Python (pyproject.toml)
PEP 518 и PEP 621 стандартизировали pyproject.toml как файл метаданных проекта Python. Конвертируйте существующие метаданные пакета в формате JSON в требуемую структуру TOML.
Конфигурация статических сайтов
Hugo, Netlify и другие генераторы статических сайтов используют конфигурационные файлы TOML. При миграции с JSON-конфигурации или программной генерации конфига конвертируйте результат в TOML.
DevOps и инфраструктура
Такие инструменты, как Terraform (для отдельных провайдеров), Consul и различные среды выполнения контейнеров, принимают конфигурацию в формате TOML. Конвертируйте настройки, экспортированные в JSON, в TOML без повторного ввода значений.
Ответ API в конфигурационный файл
REST API возвращают JSON. Когда эти данные нужно использовать в качестве конфигурации TOML — например, флаги функций или настройки окружения — вставьте ответ и получите корректный TOML.
Изучение синтаксиса TOML
Студенты и разработчики, впервые знакомящиеся с TOML, могут вставить знакомые структуры JSON и увидеть эквивалентный результат в TOML.

Сравнение JSON и TOML

JSON и TOML пересекаются по возможностям, но различаются синтаксисом, поддержкой типов и назначением. В таблице показаны различия, влияющие на конвертацию.

ХарактеристикаJSONTOML
SyntaxBraces, brackets, colons, commasKey = value, [table], [[array]]
CommentsNot allowed (RFC 8259)Supported with #
Data typesstring, number, boolean, null, object, arraystring, integer, float, boolean, datetime, array, table
null supportNative (null)No null type — omit the key or use empty string
Nested objectsUnlimited nesting depthDotted keys or [table.subtable] headers
Arrays of objectsArray of objects with [][[array-of-tables]] syntax
ReadabilityModerate — bracket-heavy at depthHigh — flat key-value pairs
SpecRFC 8259 / ECMA-404TOML v1.0.0 (toml.io)

Подводные камни конвертации в TOML

В TOML есть правила, отличающиеся от JSON, которые влияют на результат конвертации. Эти четыре проблемы вызывают наибольшую путаницу.

Нет типа null в TOML
JSON поддерживает null как полноправное значение. В TOML нет типа null вообще. При конвертации значения null должны быть обработаны — либо путём полного исключения ключа, использования пустой строки, либо выбора специального значения-заменителя. Это означает, что при обратной конвертации из TOML в JSON исходные значения null могут не восстановиться.
Ограничения на неоднородные массивы
Массивы JSON могут свободно смешивать типы: [1, "two", true]. TOML v1.0.0 требует, чтобы все элементы массива были одного типа. Если в JSON есть массивы смешанных типов, конвертер должен либо преобразовать все элементы в строки, либо вернуть ошибку. Проверяйте результат, если исходные массивы содержат разные типы.
Глубокая вложенность становится многословной
JSON обрабатывает глубокую вложенность естественным образом с помощью вложенных фигурных скобок. TOML использует ключи с точками или цепочки заголовков [table.subtable.key], которые для глубоко вложенных структур могут становиться длинными. Результат корректен, но менее компактен по сравнению с исходным JSON.
Ограничения именования ключей
Простые ключи TOML могут содержать только ASCII-буквы, цифры, дефисы и символы подчёркивания. Ключи JSON могут быть любой строкой. Если в JSON есть ключи с пробелами, точками или специальными символами, такие ключи должны быть заключены в кавычки в результате TOML. Большинство конвертеров обрабатывают это автоматически, но проверяйте результат, если ключи содержат нестандартные символы.

Примеры кода

Программная конвертация JSON в TOML требует библиотеки сериализации TOML в большинстве языков. Стандартные библиотеки разбирают JSON; для вывода TOML нужен отдельный пакет.

JavaScript (Node.js)
import { stringify } from '@iarna/toml'

const json = '{"title":"My App","database":{"host":"localhost","port":5432}}'
const obj = JSON.parse(json)
const toml = stringify(obj)
console.log(toml)
// → title = "My App"
// →
// → [database]
// → host = "localhost"
// → port = 5432
Python
import json
import tomli_w  # pip install tomli_w

json_str = '{"title": "My App", "database": {"host": "localhost", "port": 5432}}'
data = json.loads(json_str)
toml_str = tomli_w.dumps(data)
print(toml_str)
# → title = "My App"
# →
# → [database]
# → host = "localhost"
# → port = 5432
Go
package main

import (
    "encoding/json"
    "fmt"
    "github.com/pelletier/go-toml/v2"
)

func main() {
    jsonStr := `{"title":"My App","database":{"host":"localhost","port":5432}}`
    var data map[string]interface{}
    json.Unmarshal([]byte(jsonStr), &data)

    tomlBytes, _ := toml.Marshal(data)
    fmt.Println(string(tomlBytes))
    // → title = 'My App'
    // →
    // → [database]
    // → host = 'localhost'
    // → port = 5432
}
CLI (yj / remarshal)
# Using yj (https://github.com/sclevine/yj)
echo '{"title":"My App","port":3000}' | yj -jt
# → title = "My App"
# → port = 3000

# Using remarshal (pip install remarshal)
echo '{"title":"My App","port":3000}' | remarshal -if json -of toml
# → title = "My App"
# → port = 3000

Часто задаваемые вопросы

Является ли конвертация JSON в TOML обратимой без потерь?
Для большинства данных — да. Строки, целые числа, числа с плавающей точкой, булевы значения, объекты и массивы имеют прямые эквиваленты в TOML. Два исключения — это null (в TOML нет типа null, поэтому значения null опускаются или заменяются) и массивы смешанных типов (TOML требует однородных типов элементов массива). Если ваш JSON избегает этих двух случаев, конвертация полностью обратима без потерь.
Что происходит со значениями null из JSON в TOML?
В TOML нет типа null. Конвертеры, как правило, исключают ключи со значениями null из результата, поскольку в TOML нет способа представить «ключ существует, но не имеет значения». Некоторые конвертеры позволяют использовать вместо этого пустую строку. Проверяйте результат, если значения null имеют смысловую нагрузку в ваших данных.
Может ли TOML представлять вложенные объекты JSON?
Да. Объекты JSON становятся таблицами TOML. Вложенный объект вида {"database": {"host": "localhost"}} преобразуется в заголовок таблицы [database] с host = "localhost" под ним. Произвольная глубина вложенности поддерживается через ключи с точками или вложенные заголовки таблиц.
Почему Rust и Python используют TOML вместо JSON?
TOML поддерживает комментарии, которые необходимы для документирования параметров конфигурации. Он также даёт более чистый результат для плоских настроек «ключ-значение», составляющих основную часть метаданных пакета. JSON запрещает комментарии (RFC 8259), что затрудняет его использование в качестве конфигурационного формата, редактируемого человеком.
Как TOML работает с датами и временем?
В TOML есть встроенные типы для даты и времени: datetime со смещением (2024-01-15T10:30:00Z), локальный datetime, локальная дата и локальное время. В JSON нет типа для даты — даты хранятся как строки. При конвертации JSON в TOML строки, похожие на даты, остаются строками, если только конвертер явно не распознаёт и не преобразует паттерны ISO 8601.
Безопасно ли вставлять секреты и учётные данные в этот инструмент?
Да. Конвертация выполняется полностью в вашем браузере с использованием JavaScript. Никакие данные не отправляются на сервер. Вы можете убедиться в этом, открыв инструменты разработчика браузера, перейдя на вкладку «Сеть» и убедившись, что в процессе конвертации не выполняется ни одного запроса.
Какую версию TOML поддерживает результат конвертации?
Результат соответствует TOML v1.0.0, выпущенному в январе 2021 года и являющемуся текущей стабильной спецификацией. Эта версия требует однородных типов элементов массивов, поддерживает ключи с точками и определяет формат datetime. Спецификация поддерживается на toml.io.