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 та багатьох CLI-інструментів. Коли вихідні дані існують у форматі 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 у 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 потрібно якось обробити — або пропустити ключ повністю, або використати порожній рядок, або вибрати замінник. Це означає, що після перетворення JSON → 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 у TOML?
У TOML немає типу null. Конвертери зазвичай пропускають ключі з null-значеннями, оскільки в TOML немає способу представити «ключ існує, але не має значення». Деякі конвертери дозволяють замінювати null на порожній рядок. Перевіряйте результат, якщо 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 року і є поточною стабільною специфікацією. Ця версія вимагає однорідних типів у масивах, підтримує ключі з крапками та визначає формат дати і часу. Специфікація підтримується на toml.io.