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 не може представити безпосередньо: datetime зі зміщенням, локальний datetime, локальна дата та локальний час. У 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).

ТипСинтаксис TOMLJSON-вихід
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 також підтримує значення infinity та 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 підтримує infinity та 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 вимагає їх), використання табуляції для відступів всередині багаторядкових базових рядків, дублювання визначень ключів і змішування ключів з крапками з явними заголовками таблиць для одного й того ж шляху. Конвертер відображає повідомлення про помилку парсера з номером рядка, що допомагає знайти проблему.