TOML (Tom's Obvious Minimal Language) to format pliku konfiguracyjnego zaprojektowany z myślą o czytelności dla człowieka. Mapuje jednoznacznie na tablicę asocjacyjną, obsługuje zagnieżdżone tabele, typowane wartości i komentarze inline. Wiele narzędzi i frameworków używa TOML jako podstawowego formatu konfiguracji: projekty Rust polegają na Cargo.toml, pakietowanie Python korzysta z pyproject.toml, a statyczne strony Hugo konfiguruje się przez config.toml. Konwersja TOML do JSON online pozwala przekształcać te pliki konfiguracyjne w format, który praktycznie każdy język programowania, API i potok danych obsługuje natywnie.
JSON (JavaScript Object Notation), zdefiniowany przez RFC 8259, jest najszerzej obsługiwanym formatem wymiany danych. Podczas gdy TOML stawia na czytelność dla człowieka dzięki minimalistycznej składni i obsłudze komentarzy, JSON priorytetyzuje interoperacyjność maszynową. Konwerter TOML do JSON wypełnia tę lukę, parsując dane wejściowe TOML zgodnie ze specyfikacją TOML v1.0.0 i emitując strukturalnie równoważny dokument JSON. Konwersja zachowuje wszystkie dane: ciągi, liczby całkowite, liczby zmiennoprzecinkowe, wartości logiczne, tablice i tabele mapują bezpośrednio na swoje odpowiedniki w JSON.
TOML posiada cztery natywne typy daty i godziny, których JSON nie może reprezentować bezpośrednio: daty i godziny z przesunięciem strefy czasowej, lokalne daty i godziny, lokalne daty oraz lokalne godziny. JSON nie ma typu daty, więc podczas konwersji te wartości są serializowane jako ciągi ISO 8601.
Dlaczego warto używać konwertera TOML do JSON?
Pliki konfiguracyjne napisane w TOML często muszą zasilać systemy akceptujące wyłącznie JSON. Zamiast ręcznie przepisywać plik lub instalować lokalnie bibliotekę parsera, konwerter działający w przeglądarce wykonuje transformację w kilka sekund.
🔒
Przetwarzanie z zachowaniem prywatności
Dane TOML są parsowane i konwertowane wyłącznie w przeglądarce. Nic nie jest przesyłane na serwer, co sprawia, że bezpieczne jest konwertowanie plików konfiguracyjnych zawierających klucze API, dane uwierzytelniające bazy danych lub wewnętrzne nazwy hostów.
⚡
Natychmiastowa konwersja
Wklej TOML i natychmiast otrzymaj sformatowany wynik JSON. Nie trzeba instalować pakietów Node.js, bibliotek Python ani narzędzi CLI tylko po to, by wykonać jednorazową konwersję formatu.
🔀
Pełna obsługa TOML v1.0.0
Konwerter obsługuje wszystkie typy danych TOML, w tym klucze z kropkami, tabele inline, tablice tabel, ciągi wieloliniowe i wartości daty oraz godziny. Przypadki brzegowe, które sprawiają trudności przy ręcznej konwersji, są obsługiwane poprawnie.
📋
Bez rejestracji
Otwórz stronę, wklej TOML i skopiuj wynik JSON. Bez rejestracji, bez limitu zapytań i bez śledzenia użycia. Narzędzie działa tak samo przy każdej wizycie.
Przypadki użycia konwertera TOML do JSON
Tworzenie frontendu
Konwertuj metadane Cargo.toml projektu Rust WASM do JSON w celu użycia przez skrypt budowania JavaScript lub krok generowania package.json.
Inżynieria backendu
Przekształcaj konfigurację aplikacji napisaną w TOML do JSON w celu wstrzyknięcia do środowisk wymagających konfiguracji JSON, takich jak zmienne środowiskowe AWS Lambda lub etykiety kontenerów Docker.
DevOps i CI/CD
Narzędzia potoków, takie jak GitHub Actions i GitLab CI, często pracują z danymi wejściowymi JSON. Konwertuj konfiguracje narzędzi oparte na TOML (rustfmt.toml, taplo.toml) do JSON na potrzeby etapów lintowania lub walidacji.
QA i testowanie
Generuj testowe dane JSON z plików źródłowych TOML. TOML jest łatwiejszy do utrzymania jako źródło danych testowych dzięki obsłudze komentarzy i czytelnej składni, ale systemy testowe często oczekują danych wejściowych w JSON.
Inżynieria danych
Podczas migracji konfiguracji między systemami pliki TOML z jednej platformy (np. InfluxDB, Telegraf) mogą wymagać przekształcenia w dokumenty JSON dla API lub narzędzia importu innej platformy.
Nauka i edukacja
Studenci uczący się formatów danych mogą wklejać przykłady TOML i obserwować, jak tabele stają się zagnieżdżonymi obiektami, jak tablice tabel stają się tablicami JSON i jak typy daty w TOML mapują na ciągi.
Tabela mapowania typów TOML na JSON
Każdy typ TOML ma bezpośredni odpowiednik w JSON, z jednym wyjątkiem: wartości daty i godziny. Poniższa tabela pokazuje, jak każdy typ TOML jest konwertowany do JSON. Mapowanie to jest zgodne ze specyfikacją TOML v1.0.0 i odpowiada zachowaniu standardowych parserów, takich jak tomllib (Python), toml-rs (Rust) i @iarna/toml (Node.js).
Typ
Składnia TOML
Wynik JSON
String
"value"
"value"
Integer
42
42
Float
3.14
3.14
Boolean
true / false
true / false
Offset Date-Time
1979-05-27T07:32:00Z
"1979-05-27T07:32:00Z"
Local Date-Time
1979-05-27T07:32:00
"1979-05-27T07:32:00"
Local Date
1979-05-27
"1979-05-27"
Local Time
07: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": [{}]
Liczby całkowite TOML obsługują podkreślenia dla czytelności (np. 1_000_000) oraz literały szesnastkowe (0xDEADBEEF), ósemkowe (0o755) i binarne (0b11010110). Wszystkie te wartości są konwertowane na zwykłe liczby dziesiętne w JSON. TOML obsługuje również wartości zmiennoprzecinkowe nieskończoność i NaN, ale nie mają one reprezentacji w JSON i spowodują błąd konwersji w trybie ścisłym.
Przykłady kodu
Działające przykłady konwersji TOML do JSON w czterech językach. Każdy odczytuje plik TOML, parsuje go i generuje sformatowany JSON.
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))
}
Co dzieje się z komentarzami TOML podczas konwersji?
Komentarze TOML (linie zaczynające się od #) są odrzucane podczas konwersji. JSON nie obsługuje komentarzy, więc nie ma możliwości zachowania ich w wynikowym pliku. Jeśli chcesz zachować komentarze, rozważ użycie JSONC (JSON z komentarzami) jako docelowego formatu.
Czy konwersja TOML do JSON może powodować utratę danych?
W przypadku standardowych dokumentów TOML żadne dane nie są tracone. Wszystkie ciągi, liczby, wartości logiczne, tablice i tabele mają bezpośrednie odpowiedniki w JSON. Jedyną transformacją są wartości daty i godziny, które stają się ciągami ISO 8601 w JSON. Dwa przypadki brzegowe mogą powodować problemy: TOML obsługuje wartości zmiennoprzecinkowe nieskończoność i NaN, które nie mają reprezentacji w JSON, a bardzo duże liczby całkowite mogą przekraczać limity precyzji parsera JSON (2^53 - 1 w JavaScript).
Jak tablice tabel TOML są reprezentowane w JSON?
Składnia [[podwójne nawiasy]] w TOML definiuje tablicę tabel. Każdy blok [[sekcja]] dołącza nowy obiekt do tablicy JSON. Na przykład dwa bloki [[fruits]] stają się tablicą JSON z dwoma obiektami: "fruits": [{...}, {...}]. Składnia z podwójnymi nawiasami jest jedną z trudniejszych do odczytania cech TOML; wynik JSON czyni tę strukturę oczywistą.
Czy konwersja jest odwracalna? Czy można wrócić z JSON do TOML?
Strukturalnie tak. Każdy obiekt JSON może być reprezentowany jako tabela TOML, a tablice JSON mapują na tablice TOML. Jednak specyficzne dla TOML cechy, takie jak komentarze, grupowanie kluczy z kropkami i formatowanie tabel inline, są tracone podczas wstępnej konwersji TOML do JSON i nie mogą być odtworzone. Konwersja w obie strony da poprawny, ale potencjalnie mniej czytelny TOML.
Jaka jest różnica między TOML a JSON w plikach konfiguracyjnych?
TOML został zaprojektowany do konfiguracji: obsługuje komentarze, ma bardziej czytelną składnię dla zagnieżdżonych struktur, rozróżnia liczby całkowite i zmiennoprzecinkowe oraz zawiera natywne typy daty i godziny. JSON został zaprojektowany do wymiany danych między programami. JSON jest szerzej obsługiwany przez narzędzia i API, ale TOML jest łatwiejszy do odczytania i edytowania przez człowieka. Wiele projektów używa TOML do konfiguracji źródłowej i konwertuje do JSON na potrzeby wdrożenia.
Jak to narzędzie obsługuje klucze z kropkami, takie jak server.host?
Klucze z kropkami w TOML (np. server.host = "localhost") tworzą zagnieżdżone obiekty w JSON: {"server": {"host": "localhost"}}. Jest to równoważne zdefiniowaniu tabeli [server] z kluczem host. Konwerter automatycznie rozwiązuje klucze z kropkami w ich pełną zagnieżdżoną strukturę.
Dlaczego mój plik TOML nie zostaje skonwertowany?
Typowe przyczyny to: brak cudzysłowów wokół wartości ciągów (TOML ich wymaga), użycie tabulatorów do wcięć wewnątrz wieloliniowych ciągów podstawowych, zduplikowane definicje kluczy oraz mieszanie kluczy z kropkami z jawnymi nagłówkami tabeli dla tej samej ścieżki. Konwerter wyświetla komunikat błędu parsera z numerem wiersza, aby pomóc zlokalizować problem.