W tym artykule
Czym jest TOML?
TOML (Tom's Obvious Minimal Language) to format plikow konfiguracyjnych zaprojektowany tak, aby byl latwy do czytania i pisania. Stworzony przez Toma Prestona-Wernera (wspolzalozyciela GitHub) w 2013 roku, TOML jednoznacznie mapuje sie na tablice haszowa, co ulatwia parsowanie go do struktur danych w kazdym jezyku programowania.
W przeciwienstwie do YAML, ktory polega na wciieciach i ma liczne pulapki, czy JSON, ktory nie obsluguje komentarzy i koncowych przecinkow, TOML oferuje zloty srodek: jawne typowanie (lancuchy, liczby calkowite, zmiennoprzecinkowe, booleany, daty), czytelna skladnia tabel z [nawiasami] i obsluga tabel wbudowanych oraz tablic — wszystko bez wieloznacznosci, ktora dotyka inne formaty konfiguracji.
Jak dziala konwersja TOML na JSON
Konwersja miedzy TOML a JSON polega na parsowaniu formatu zrodlowego do posredniej struktury danych i serializacji jej do formatu docelowego. Kazdy typ TOML mapuje sie bezposrednio na odpowiednik JSON.
- Pary klucz-wartosc — skladnia klucz = wartosc TOML mapuje sie na wlasciwosci obiektow JSON; klucze z kropka jak server.port staja sie zagniezdzonymi obiektami
- Tabele i tablice — naglowki [tabela] TOML staja sie obiektami JSON, a [[tablica-tabel]] staja sie tablicami obiektow JSON, zachowujac strukture hierarchiczna
- System typow — natywne typy TOML (string, integer, float, boolean, datetime) mapuja sie na prymitywy JSON; wartosci datetime sa serializowane jako lancuchy ISO 8601, poniewaz JSON nie ma typu daty
Wypróbuj za darmo — bez rejestracji
Konwertuj TOML na JSON →Gdzie uzywa sie TOML
TOML zostal przyjety przez kilka waznych ekosystemow jako preferowany format konfiguracji dzieki swojej czytelnosci i scislosci.
- Ekosystem Rust — Cargo.toml jest manifestem pakietu dla kazdego projektu Rust, definiujacym zaleznosci, ustawienia kompilacji i metadane w formacie czytelnym zarowno dla ludzi, jak i maszyn
- Pakowanie Python — pyproject.toml (PEP 518/621) stal sie standardem konfiguracji projektow Python, zastepujac setup.py i setup.cfg czystszym, deklaratywnym formatem
- Generatory stron statycznych — Hugo uzywa config.toml do konfiguracji witryny, a wiele innych narzedzi (Deno, InfluxDB, Netlify) uzywa TOML do swoich plikow konfiguracyjnych
Czesto zadawane pytania
Jakie sa roznice miedzy TOML, YAML i JSON do konfiguracji?
JSON jest najprostszy, ale nie obsluguje komentarzy i koncowych przecinkow, co czyni go niewygodnym dla plikow konfiguracyjnych edytowanych przez ludzi. YAML obsluguje komentarze i jest wizualnie czysty, ale jego skladnia oparta na wciieciach prowadzi do subtelnych bledow. TOML obsluguje komentarze, ma jawne typowanie i unika parsowania opartego na wciieciach.
Jakie sa ograniczenia TOML?
TOML moze stac sie rozwlekly dla gleaboko zagniezdzonych struktur, poniewaz kazdy poziom zagniezdzenia wymaga wlasnego naglowka [tabela.podtabela]. Nie ma tez typu null (w przeciwienstwie do JSON i YAML), co oznacza, ze brakujace wartosci musza byc obslugiwane przez calkowite pominiecie klucza.
Jak TOML obsluguje daty i czas?
TOML ma natywna obsluge typow daty i czasu zgodnie z RFC 3339: datetime z przesunieciem (2024-01-15T10:30:00Z), lokalny datetime (2024-01-15T10:30:00), lokalna data (2024-01-15) i lokalny czas (10:30:00). Przy konwersji na JSON sa serializowane jako lancuchy ISO 8601, poniewaz JSON nie ma natywnego typu daty.