Skip to main content
CheckTown
Konwertery

Konwerter TOML do JSON: dwukierunkowa konwersja formatów

Opublikowano 4 min czytania
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.

Powiązane narzędzia