Skip to main content
CheckTown
Конвертери

TOML to JSON Converter: Bidirectional Format Conversion

Опубліковано 4 хв читання
У цій статті

Що таке TOML?

TOML (Tom's Obvious Minimal Language) — це формат конфігураційних файлів, створений для простого читання та запису. Розроблений Томом Престон-Вернером (співзасновником GitHub) у 2013 році, TOML однозначно відображається у хеш-таблицю, що спрощує його парсинг у структури даних будь-якою мовою програмування. Його чистий синтаксис надає пріоритет зручності читання людиною над гнучкістю.

На відміну від YAML, що покладається на відступи та має численні підводні камені, або JSON, який не підтримує коментарі та кінцеві коми, TOML пропонує золоту середину: явну типізацію (рядки, цілі числа, числа з плаваючою комою, булеві значення, дати), зрозумілий синтаксис таблиць з [дужками] та підтримку вбудованих таблиць і масивів — все це без двозначності, що притаманна іншим форматам конфігурації.

Як працює конвертація TOML у JSON

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

  • Пари ключ-значення — синтаксис ключ = значення TOML відповідає властивостям об'єктів JSON; ключі з крапкою, як server.port, стають вкладеними об'єктами
  • Таблиці та масиви — заголовки [таблиця] TOML стають об'єктами JSON, а [[масив-таблиць]] стають масивами об'єктів JSON, зберігаючи ієрархічну структуру
  • Система типів — нативні типи TOML (рядок, ціле, дробне, булеве, datetime) відповідають примітивам JSON; значення datetime серіалізуються як рядки ISO 8601, оскільки JSON не має типу дати

Спробуйте безкоштовно — реєстрація не потрібна

Конвертувати TOML у JSON →

Де використовується TOML

TOML був прийнятий кількома великими екосистемами як переважний формат конфігурації завдяки своїй ясності та суворості.

  • Екосистема Rust — Cargo.toml є маніфестом пакета для кожного проєкту Rust, визначаючи залежності, налаштування збірки та метадані у форматі, зручному для редагування людиною та парсингу машиною
  • Пакування Python — pyproject.toml (PEP 518/621) став стандартом для конфігурації проєктів Python, замінивши setup.py та setup.cfg чистішим декларативним форматом
  • Генератори статичних сайтів — Hugo використовує config.toml для конфігурації сайту, і багато інших інструментів (Deno, InfluxDB, Netlify) використовують TOML для своїх конфігураційних файлів

Поширені запитання

Які відмінності між TOML, YAML та JSON для конфігурації?

JSON найпростіший, але не підтримує коментарі та кінцеві коми, що робить його незручним для конфігураційних файлів, редагованих людьми. YAML підтримує коментарі та візуально чистий, але його синтаксис на основі відступів призводить до тонких помилок. TOML підтримує коментарі, має явну типізацію та уникає парсингу на основі відступів — що робить його найбезпечнішим вибором для конфігураційних файлів, які люди редагують безпосередньо.

Які обмеження TOML?

TOML може стати багатослівним для глибоко вкладених структур, оскільки кожен рівень вкладеності потребує свого власного заголовка [таблиця.підтаблиця]. Він також не має типу null (на відміну від JSON та YAML), що означає відсутні значення потрібно обробляти повним пропуском ключа.

Як TOML обробляє дати та час?

TOML має першокласну підтримку типів дати та часу за RFC 3339: datetime зі зміщенням (2024-01-15T10:30:00Z), локальний datetime (2024-01-15T10:30:00), локальна дата (2024-01-15) та локальний час (10:30:00). При конвертації в JSON вони серіалізуються як рядки ISO 8601, оскільки JSON не має нативного типу дати.

Пов'язані інструменти