Utilia

Конвертер TOML у JSON

Конвертуйте TOML у JSON і JSON у TOML у браузері. Підтримуються таблиці, масиви таблиць, дати та 64-бітні цілі числа. Нічого не завантажується на сервер.

Конвертація

Як конвертувати TOML у JSON

  1. Виберіть напрямок: TOML → JSON (за замовчуванням) або JSON → TOML.
  2. Вставте дані або натисніть Відкрити файл, щоб завантажити файл .toml чи .json (до 10 МБ).
  3. Для TOML → JSON виберіть Відступи (2 або 4 пробіли) і вирішіть, чи позначати Великі цілі як рядки. Для JSON → TOML залиште або зніміть позначку Пропускати значення null.
  4. Позначте Сортувати ключі, якщо хочете, щоб усі таблиці впорядковувалися за алфавітом.
  5. Результат оновлюється під час введення; кнопка Конвертувати виконує перетворення знову на вимогу. Помилки показують рядок і стовпець проблеми.
  6. Скопіюйте або завантажте результат. Змінити напрямок переносить результат у вхідні дані, щоб конвертувати його назад.

TOML і JSON поруч

TOML (Tom’s Obvious Minimal Language) – формат конфігурації, на якому побудовано Cargo.toml у Rust, pyproject.toml у Python, сайти на Hugo й Netlify та багато інструментів командного рядка. Його створено так, щоб люди могли його читати й редагувати, а відображається він прямо на JSON-подібне дерево таблиць (об’єктів), масивів і значень.

[package]
name = "demo"
version = "0.1.0"

[[bin]]
name = "cli"

перетворюється на

{"package": {"name": "demo", "version": "0.1.0"}, "bin": [{"name": "cli"}]}
  • Заголовок [table] стає об’єктом JSON, а ключі з крапками, як-от a.b.c = 1, – вкладеними об’єктами.
  • Масив таблиць [[bin]] стає масивом об’єктів JSON.
  • Вбудовані таблиці { x = 1 } і масиви працюють так, як ви очікуєте. Коментарі відкидаються, бо в JSON їх немає.

Чим відрізняються ці два формати

Дати й час. У TOML є чотири вбудовані типи дати й часу; у JSON – жодного. Конвертер записує їх як рядки ISO 8601 і зберігає їхній різновид: дата з часовим зсувом лишається 1979-05-27T07:32:00.000-08:00, локальна дата – 1979-05-27, а локальний час – 07:32:00.000. Дробові секунди зберігаються з точністю до мілісекунди. Під час конвертації назад у TOML виходять звичайні рядки, бо нічого в JSON не позначає їх як дати.

Цілі числа. Цілі числа TOML – знакові 64-бітні, від −9 223 372 036 854 775 808 до 9 223 372 036 854 775 807. Числа JavaScript, які використовує більшість парсерів JSON, точні лише до 2^53 (9 007 199 254 740 991). Більші цілі числа TOML записуються з усіма цифрами, що є коректним JSON, але програма, яка читає їх як double, їх округлить; позначте Великі цілі як рядки, щоб цього уникнути. Ціле число поза 64-бітним діапазоном відхиляється, як того вимагає специфікація TOML.

Особливі дійсні числа. inf, -inf і nan не мають форми в JSON, тому записуються як рядки "inf", "-inf" і "nan".

JSON → TOML. Документ TOML завжди є таблицею, тому JSON на верхньому рівні має бути об’єктом. У TOML немає null: за замовчуванням значення null пропускаються, а повідомлення вказує, скільки їх було; зніміть позначку Пропускати значення null, щоб натомість отримати помилку з розташуванням першого з них. JSON не розрізняє 1 і 1.0, тому цілі числа стають цілими числами TOML, а числа, надто великі для 64 біт, – дійсними. У нових браузерах великі цілі числа у вашому JSON зберігають точні цифри.

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

Чи надсилається моя конфігурація кудись?

Ні. Конвертація виконується цілком у вашому браузері, тому ключі API чи секрети у файлах конфігурації ніколи не залишають ваш комп’ютер.

Чому порядок ключів у TOML змінився?

TOML вимагає, щоб прості пари «ключ–значення» в кожній таблиці йшли перед підтаблицями, тому конвертер записує спершу значення, потім [таблиці], а потім [[масиви таблиць]]. Дані ті самі.

Чи зберігаються коментарі TOML?

Ні. У JSON немає коментарів, тому вони втрачаються під час конвертації TOML → JSON, а на зворотному шляху відновлювати нічого.

Яку версію TOML підтримано?

TOML 1.0, зокрема ключі з крапками, вбудовані таблиці, масиви таблиць, шістнадцяткові, вісімкові та двійкові цілі числа й усі чотири типи дати й часу.

Чому моя дата в JSON є рядком?

У JSON немає типу дати. Рядки ISO 8601 – звичайна угода, і більшість мов уміє розбирати їх напряму.