ToolDeck

TOML to JSON

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

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

Входные данные TOML

Результат JSON

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

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

TOML (Tom's Obvious Minimal Language) — формат конфигурационных файлов, созданный для людей. Он однозначно отображается в хэш-таблицу, поддерживает вложенные таблицы, типизированные значения и встроенные комментарии. Многие инструменты и фреймворки используют TOML как основной формат конфигурации: проекты на Rust опираются на Cargo.toml, упаковка Python использует pyproject.toml, а статические сайты Hugo настраиваются через config.toml. Конвертация TOML в JSON онлайн позволяет преобразовать эти конфигурационные файлы в формат, который нативно поддерживается практически любым языком программирования, API и конвейером обработки данных.

JSON (JavaScript Object Notation), определённый стандартом RFC 8259, является наиболее распространённым форматом обмена данными. Тогда как TOML ставит во главу угла читаемость благодаря минималистичному синтаксису и поддержке комментариев, JSON ориентирован на машинную совместимость. Конвертер TOML в JSON устраняет это различие: он разбирает входные данные TOML согласно спецификации TOML v1.0.0 и формирует структурно эквивалентный JSON-документ. Конвертация сохраняет все данные: строки, целые числа, числа с плавающей точкой, булевы значения, массивы и таблицы напрямую отображаются в соответствующие типы JSON.

TOML имеет четыре собственных типа даты и времени, которые JSON не может представить напрямую: date-time со смещением, локальный date-time, локальная дата и локальное время. В JSON нет типа даты, поэтому при конвертации эти значения сериализуются как строки ISO 8601.

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

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

🔒
Обработка данных без передачи на сервер
Разбор и конвертация ваших данных TOML выполняются полностью в браузере. Ничего не отправляется на сервер, поэтому конвертировать конфигурационные файлы, содержащие ключи API, учётные данные базы данных или внутренние имена хостов, совершенно безопасно.
Мгновенная конвертация
Вставьте TOML и сразу получите отформатированный JSON. Не нужно устанавливать пакеты Node.js, библиотеки Python или CLI-инструменты только ради разового преобразования формата.
🔀
Полная поддержка TOML v1.0.0
Конвертер обрабатывает все типы данных TOML, включая составные ключи, встроенные таблицы, массивы таблиц, многострочные строки и значения даты и времени. Граничные случаи, в которых ошибается ручная конвертация, обрабатываются корректно.
📋
Без регистрации
Откройте страницу, вставьте TOML и скопируйте результат JSON. Никакой регистрации, лимитов запросов и отслеживания использования. Инструмент работает одинаково при каждом посещении.

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

Фронтенд-разработка
Конвертируйте метаданные Cargo.toml из Rust WASM-проекта в JSON для использования в JavaScript-скрипте сборки или при генерации package.json.
Бэкенд-разработка
Преобразуйте конфигурацию приложения в формате TOML в JSON для внедрения в среды, требующие JSON-конфигурации, — например, переменные окружения AWS Lambda или метки контейнеров Docker.
DevOps и CI/CD
Конвейерные инструменты, такие как GitHub Actions и GitLab CI, нередко работают с JSON-входными данными. Конвертируйте конфигурации инструментов на основе TOML (rustfmt.toml, taplo.toml) в JSON для шагов линтинга или валидации.
QA и тестирование
Генерируйте JSON-фикстуры для тестов из TOML-файлов. TOML удобнее поддерживать как источник тестовых данных благодаря поддержке комментариев и читаемому синтаксису, тогда как тестовые фреймворки часто ожидают JSON на входе.
Инженерия данных
При миграции конфигурации между системами TOML-файлы одной платформы (например, InfluxDB, Telegraf) могут потребоваться в виде JSON-документов для API или инструмента импорта другой платформы.
Обучение и образование
Студенты, изучающие форматы данных, могут вставлять примеры TOML и наглядно видеть, как таблицы становятся вложенными объектами, как массивы таблиц превращаются в JSON-массивы и как типы даты TOML отображаются в строки.

Справочник по соответствию типов TOML и JSON

Каждый тип TOML имеет прямой эквивалент в JSON, за единственным исключением: значения даты и времени. Таблица ниже показывает, как каждый тип TOML конвертируется в JSON. Это соответствие следует спецификации TOML v1.0.0 и соответствует поведению стандартных парсеров: tomllib (Python), toml-rs (Rust) и @iarna/toml (Node.js).

ТипСинтаксис TOMLРезультат JSON
String"value""value"
Integer4242
Float3.143.14
Booleantrue / falsetrue / false
Offset Date-Time1979-05-27T07:32:00Z"1979-05-27T07:32:00Z"
Local Date-Time1979-05-27T07:32:00"1979-05-27T07:32:00"
Local Date1979-05-27"1979-05-27"
Local Time07:32:00"07:32:00"
Array[1, 2, 3][1, 2, 3]
Table[section]{ "section": {} }
Inline Table{ key = "val" }{ "key": "val" }
Array of Tables[[items]]"items": [{}]

Целые числа TOML поддерживают символы подчёркивания для удобочитаемости (например, 1_000_000), а также шестнадцатеричные (0xDEADBEEF), восьмеричные (0o755) и двоичные (0b11010110) литералы. Все они конвертируются в обычные десятичные числа в JSON. TOML также поддерживает значения бесконечности и NaN для чисел с плавающей точкой, однако они не имеют представления в JSON и вызовут ошибку конвертации в строгом режиме.

Примеры кода

Рабочие примеры конвертации TOML в JSON на четырёх языках. Каждый пример читает TOML-файл, разбирает его и выводит отформатированный JSON.

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

const toml = fs.readFileSync('config.toml', 'utf8')
const json = parse(toml)
console.log(JSON.stringify(json, null, 2))
// Input:  [server]
//         host = "localhost"
//         port = 8080
// Output: { "server": { "host": "localhost", "port": 8080 } }
Python
import tomllib   # Python 3.11+ (standard library)
import json

with open('config.toml', 'rb') as f:
    data = tomllib.load(f)

print(json.dumps(data, indent=2, default=str))
# Dates become strings: "1979-05-27"
# Arrays of tables become JSON arrays of objects
Go
package main

import (
    "encoding/json"
    "fmt"
    "os"

    "github.com/BurntSushi/toml"
)

func main() {
    var data map[string]any
    _, err := toml.DecodeFile("config.toml", &data)
    if err != nil {
        panic(err)
    }
    out, _ := json.MarshalIndent(data, "", "  ")
    fmt.Println(string(out))
}
CLI (yj / dasel)
# Using yj (YAML/JSON/TOML converter)
cat config.toml | yj -tj

# Using dasel
dasel -f config.toml -r toml -w json

# Using Python one-liner (3.11+)
python3 -c "import tomllib, json, sys; print(json.dumps(tomllib.load(sys.stdin.buffer), indent=2, default=str))" < config.toml

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

Что происходит с комментариями TOML при конвертации?
Комментарии TOML (строки, начинающиеся с #) удаляются при конвертации. JSON не поддерживает комментарии, поэтому сохранить их в выходных данных невозможно. Если вам нужно сохранить комментарии, рассмотрите JSONC (JSON с комментариями) в качестве целевого формата.
Может ли конвертация TOML в JSON привести к потере данных?
Для стандартных TOML-документов данные не теряются. Все строки, числа, булевы значения, массивы и таблицы имеют прямые эквиваленты в JSON. Единственное преобразование затрагивает значения даты и времени, которые становятся строками ISO 8601 в JSON. Два граничных случая могут вызвать проблемы: TOML поддерживает бесконечность и NaN для чисел с плавающей точкой, не имеющих представления в JSON, а очень большие целые числа могут превышать пределы точности парсера JSON (2^53 - 1 в JavaScript).
Как массивы таблиц TOML представлены в JSON?
Синтаксис [[двойных скобок]] в TOML определяет массив таблиц. Каждый блок [[section]] добавляет новый объект в JSON-массив. Например, два блока [[fruits]] становятся JSON-массивом из двух объектов: "fruits": [{...}, {...}]. Синтаксис двойных скобок — один из наиболее сложных для понимания аспектов TOML; JSON-результат делает структуру очевидной.
Является ли конвертация обратимой? Можно ли вернуться из JSON в TOML?
Структурно — да. Любой JSON-объект можно представить как таблицу TOML, а JSON-массивы отображаются в массивы TOML. Однако специфичные для TOML возможности — комментарии, группировка составных ключей и форматирование встроенных таблиц — теряются в процессе первоначальной конвертации TOML в JSON и не могут быть восстановлены. Обратное преобразование даст корректный, но потенциально менее читаемый TOML.
В чём разница между TOML и JSON для конфигурационных файлов?
TOML создавался для конфигурации: он поддерживает комментарии, имеет более читаемый синтаксис для вложенных структур, различает целые числа и числа с плавающей точкой, а также включает собственные типы даты и времени. JSON создавался для обмена данными между программами. JSON шире поддерживается инструментами и API, но TOML легче читать и редактировать людям. Многие проекты используют TOML для исходной конфигурации и конвертируют в JSON для развёртывания.
Как инструмент обрабатывает составные ключи, например server.host?
Составные ключи в TOML (например, server.host = "localhost") создают вложенные объекты в JSON: {"server": {"host": "localhost"}}. Это эквивалентно определению таблицы [server] с ключом host. Конвертер автоматически разворачивает составные ключи в полную вложенную структуру.
Почему мой TOML-файл не конвертируется?
Распространённые причины: отсутствие кавычек вокруг строковых значений (TOML требует их обязательного наличия), использование табуляции для отступов внутри многострочных базовых строк, дублирование определений ключей, а также смешивание составных ключей с явными заголовками таблиц для одного и того же пути. Конвертер отображает сообщение об ошибке парсера с номером строки, чтобы помочь локализовать проблему.