W tym artykule
Czym jest TOML?
TOML (Tom's Obvious Minimal Language) to format plikow konfiguracyjnych zaprojektowany tak, aby byl łatwy do czytania i pisania. Stworzony przez Toma Prestona-Wernera (współzałożyciela GitHub) w 2013 roku, TOML jednoznacznie mapuje sie na tablice haszowa, co ułatwia parsowanie go do struktur danych w każdym języku programowania.
W przeciwieństwie do YAML, ktory polega na wciieciach i ma liczne pułapki, czy JSON, ktory nie obsługuje komentarzy i końcowych przecinkow, TOML oferuje zloty środek: jawne typowanie (łańcuchy, liczby całkowite, zmiennoprzecinkowe, booleany, daty), czytelna skladnia tabel z [nawiasami] i obsluga tabel wbudowanych oraz tablic — wszystko bez wieloznacznosci, ktora dotyka inne formaty konfiguracji.
Jak działa konwersja TOML na JSON
Konwersja między TOML a JSON polega na parsowaniu formatu źródłowego do posredniej struktury danych i serializacji jej do formatu docelowego. Każdy typ TOML mapuje sie bezpośrednio na odpowiednik JSON.
- Pary klucz-wartość — skladnia klucz = wartość TOML mapuje sie na właściwości obiektow JSON; klucze z kropka jak server.port staja sie zagnieżdżonymi obiektami
- Tabele i tablice — nagłówki [tabela] TOML staja sie obiektami JSON, a [[tablica-tabel]] staja sie tablicami obiektow JSON, zachowując strukture hierarchiczna
- System typow — natywne typy TOML (string, integer, float, boolean, datetime) mapuja sie na prymitywy JSON; wartości datetime sa serializowane jako łańcuchy ISO 8601, poniewaz JSON nie ma typu daty
Wypróbuj za darmo — bez rejestracji
Konwertuj TOML na JSON →Gdzie używa sie TOML
TOML zostal przyjęty przez kilka ważnych ekosystemow jako preferowany format konfiguracji dzięki swojej czytelności i scislosci.
- Ekosystem Rust — Cargo.toml jest manifestem pakietu dla każdego projektu Rust, definiujacym zależności, 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, zastępując setup.py i setup.cfg czystszym, deklaratywnym formatem
- Generatory stron statycznych — Hugo używa config.toml do konfiguracji witryny, a wiele innych narzędzi (Deno, InfluxDB, Netlify) używa TOML do swoich plikow konfiguracyjnych
Często zadawane pytania
Jakie sa roznice między TOML, YAML i JSON do konfiguracji?
JSON jest najprostszy, ale nie obsługuje komentarzy i końcowych przecinkow, co czyni go niewygodnym dla plikow konfiguracyjnych edytowanych przez ludzi. YAML obsługuje komentarze i jest wizualnie czysty, ale jego skladnia oparta na wciieciach prowadzi do subtelnych błędów. TOML obsługuje komentarze, ma jawne typowanie i unika parsowania opartego na wciieciach.
Jakie sa ograniczenia TOML?
TOML moze stac sie rozwlekły dla gleaboko zagnieżdżonych struktur, poniewaz każdy poziom zagnieżdżenia wymaga własnego nagłówka [tabela.podtabela]. Nie ma tez typu null (w przeciwieństwie do JSON i YAML), co oznacza, ze brakujące wartości musza byc obsługiwane przez całkowite pominięcie klucza.
Jak TOML obsługuje daty i czas?
TOML ma natywna obsługę typow daty i czasu zgodnie z RFC 3339: datetime z przesunięciem (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 łańcuchy ISO 8601, poniewaz JSON nie ma natywnego typu daty.