ToolDeck

TOML

2 narzędzi

Narzędzia TOML na ToolDeck pozwalają formatować, walidować i konwertować pliki konfiguracyjne TOML bezpośrednio w przeglądarce — bez instalacji, bez konta, bez przesyłania danych na żaden serwer. TOML Formatter parsuje dane wejściowe i serializuje je ponownie ze spójnym wcięciem, ujednoliconą kolejnością kluczy i inline'owymi błędami walidacji wskazującymi dokładne miejsce problemu składniowego. Konwerter TOML do JSON przekształca dokumenty TOML w ich odpowiedniki JSON, zachowując typy danych — w tym daty i godziny, tabele inline oraz tablice tabel. Oba narzędzia działają całkowicie po stronie klienta, więc Twoje pliki konfiguracyjne — które często zawierają dane logowania do bazy danych, endpointy API i sekrety wdrożeniowe — pozostają na Twoim urządzeniu. Jeśli potrzebujesz konwersji w drugą stronę, Konwerter JSON do TOML w kategorii JSON obsługuje tę operację.

Czym są narzędzia TOML?

TOML (Tom's Obvious, Minimal Language) to format pliku konfiguracyjnego oparty na jawnej, jednoznacznej składni. Stworzony przez Toma Prestona-Wernera, współzałożyciela GitHub, TOML został po raz pierwszy wydany w 2013 roku i osiągnął specyfikację 1.0 w styczniu 2021. Format odwzorowuje się jednoznacznie na tablicę haszującą: każdy plik TOML definiuje drzewo par klucz-wartość zorganizowanych w tabele (sekcje oznaczone [nawiasami]). W odróżnieniu od YAML, TOML nie opiera struktury na wcięciach, co eliminuje całą klasę błędów parsowania związanych z białymi znakami. W odróżnieniu od JSON, TOML obsługuje komentarze, natywne typy daty i czasu oraz ciągi wieloliniowe — funkcje, których pliki konfiguracyjne potrzebują, a do których JSON nie był zaprojektowany.

Narzędzia TOML automatyzują mechaniczną pracę odczytu, walidacji i konwersji plików TOML. Narzędzia do formatowania normalizują wcięcia i kolejność kluczy, dzięki czemu pliki konfiguracyjne pozostają czytelne w całym zespole, nawet gdy wielu współpracowników edytuje ten sam plik. Narzędzia do konwersji tłumaczą między TOML i JSON, co jest przydatne, gdy biblioteka lub API oczekuje danych w JSON, ale źródłem prawdy jest konfiguracja TOML. Walidacja wykrywa błędy składniowe — brakujący nawias zamykający, zduplikowany klucz lub nieprawidłowy literał daty — zanim spowodują awarie przy uruchamianiu aplikacji.

Takie zadania pojawiają się często w projektach Rust (gdzie Cargo.toml jest manifestem pakietu), w pakietowaniu Python (pyproject.toml zastąpił setup.py jako standardowa konfiguracja budowania zgodnie z PEP 518 i PEP 621), w statycznych witrynach Hugo (które domyślnie używają TOML do konfiguracji), oraz w każdej konfiguracji infrastruktury przechowującej ustawienia w plikach TOML. Specyfikacja TOML jest utrzymywana pod adresem toml.io, a parsery istnieją dla każdego głównego języka programowania.

Dlaczego warto używać narzędzi TOML na ToolDeck?

Narzędzia TOML na ToolDeck parsują i przetwarzają wszystko wewnątrz karty przeglądarki przy użyciu JavaScript. Żadne dane konfiguracyjne nie są przesyłane na serwer, konto nie jest wymagane, a narzędzia działają offline po pierwszym załadowaniu strony.

🔒
Prywatne domyślnie
Pliki konfiguracyjne często zawierają wrażliwe wartości — adresy URL baz danych, klucze API, cele wdrożeń. ToolDeck przetwarza TOML całkowicie po stronie klienta, więc nic nie opuszcza przeglądarki. Bezpieczne dla projektów zastrzeżonych i wewnętrznych konfiguracji infrastruktury.
Natychmiastowy feedback
Wklej TOML, a sformatowany wynik lub JSON pojawi się natychmiast. Błędy składniowe są zgłaszane z numerami wierszy i opisami. Bez czekania na instalację narzędzia CLI ani na ukończenie kroku budowania.
🔄
Dokładna konwersja typów
Konwerter TOML do JSON zachowuje typy specyficzne dla TOML, takie jak daty z przesunięciem strefy czasowej, daty lokalne i czasy lokalne jako ciągi ISO 8601. Precyzja liczb całkowitych i zmiennoprzecinkowych jest zachowana. Tablice tabel są poprawnie odwzorowywane na tablice obiektów JSON.
🌐
Bez instalacji
Działa na każdym urządzeniu z nowoczesną przeglądarką. Przydatne, gdy recenzujesz pull request na maszynie bez swojego zwykłego środowiska deweloperskiego lub gdy musisz szybko zwalidować plik TOML kolegi.

Przypadki użycia narzędzi TOML

Formatowanie, walidacja i konwersja TOML pojawiają się w różnych rolach i typach projektów. Programiści Rust pracują z Cargo.toml na co dzień. Programiści Python konfigurują buildy i narzędzia przez pyproject.toml. Inżynierowie DevOps zarządzają konfiguracją aplikacji dostarczaną jako TOML. Poniższe zadania pokazują, gdzie przeglądarkowe narzędzia TOML oszczędzają czas w porównaniu z pisaniem jednorazowego skryptu lub instalowaniem narzędzia CLI.

Porządkowanie Cargo.toml
Po scaleniu kilku uzupełnień zależności, Cargo.toml projektu Rust ma niespójne formatowanie. Przepuść go przez TOML Formatter, aby znormalizować wcięcia i kolejność kluczy przed zatwierdzeniem zmian.
pyproject.toml do JSON
Potok CI potrzebuje metadanych budowania w formacie JSON, ale źródłem prawdy jest pyproject.toml. Użyj Konwertera TOML do JSON, aby wygenerować reprezentację JSON i zweryfikować odwzorowanie przed wpisaniem konwersji do potoku.
Migracja konfiguracji
Przenoszenie aplikacji z konfiguracji opartej na JSON do TOML (lub odwrotnie). Konwerter TOML do JSON pozwala porównać obie reprezentacje obok siebie, aby potwierdzić zachowanie typów danych, zagnieżdżonych struktur i semantyki tablic.
Debugowanie składni
Plik konfiguracyjny TOML nie parsuje się przy uruchamianiu aplikacji i wyświetla nieprzejrzysty komunikat błędu. Wklej go do TOML Formatter, aby uzyskać konkretne numery wierszy i kolumn dla błędu składniowego wraz z opisem, czego oczekiwał parser.
Generowanie dokumentacji
Pisanie dokumentacji zawierającej przykłady konfiguracji w formatach TOML i JSON. Przekonwertuj kanoniczny przykład TOML przez Konwerter TOML do JSON, aby obie wersje były zsynchronizowane bez ręcznego przepisywania.
Nauka składni TOML
Programiści, którzy dopiero poznają TOML, mogą eksperymentować z formatem, pisząc TOML w TOML Formatter, obserwując błędy walidacji w czasie rzeczywistym i porównując strukturę ze sformatowanym wynikiem. Jest to szybsze niż samo czytanie specyfikacji.

Typy danych TOML — informacje

TOML v1.0 definiuje następujące typy danych. Każdy typ odwzorowuje się na konkretną reprezentację po konwersji do JSON. Poniższa tabela obejmuje składnię, przykłady i zachowanie konwersji dla każdego typu TOML.

TypSkładniaPrzykładOdwzorowanie JSON
String"..." lub '...'name = "TOML"Ciąg JSON. Ciągi podstawowe obsługują sekwencje ucieczki (\n, \t, \u). Ciągi literalne ('...') traktują ukośniki odwrotne jako znaki dosłowne.
Integercyfry, 0x, 0o, 0bport = 8080Liczba JSON. Obsługuje zapis szesnastkowy (0xDEAD), ósemkowy (0o755), binarny (0b1010) i separatory podkreślenia (1_000).
Floatcyfry z . lub epi = 3.14159Liczba JSON. Obsługuje inf, -inf i nan (odwzorowane na null lub ciąg w JSON, ponieważ JSON nie ma NaN).
Booleantrue / falseenabled = trueWartość logiczna JSON. Tylko małe litery true i false są prawidłowe.
Offset Date-TimeRFC 33392024-01-15T09:30:00ZCiąg JSON (ISO 8601). Zawiera przesunięcie strefy czasowej. JSON nie ma natywnego typu daty i czasu.
Local Date-Timedate T time2024-01-15T09:30:00Ciąg JSON. Bez informacji o strefie czasowej. Przydatne dla czasów zegarowych.
Local DateYYYY-MM-DD2024-01-15Ciąg JSON. Data bez składowej czasu.
Local TimeHH:MM:SS09:30:00Ciąg JSON. Czas bez daty ani strefy czasowej.
Array[value, ...]ports = [8080, 8443]Tablica JSON. Tablice TOML mogą być heterogeniczne w TOML v1.0, ale muszą być jednorodne w v0.5.
TabletomlCategoryContent.r10Syntax[database]Obiekt JSON. Standardowe tabele używają [nawiasów]. Tabele inline używają nawiasów klamrowych w jednym wierszu.

Specyfikacja TOML v1.0.0 (toml.io) jest aktualną stabilną wersją. Tablice tabel używają [[podwójnych nawiasów]], aby definiować powtarzające się wpisy tej samej struktury tabeli, odwzorowując się na tablice obiektów JSON.

Jak wybrać właściwe narzędzie TOML

ToolDeck ma trzy narzędzia do pracy z plikami TOML. Dwa są w kategorii TOML, a jedno — w kategorii JSON do konwersji w odwrotnym kierunku. Wybierz narzędzie pasujące do Twojego zadania.

  1. 1
    Jeśli chcesz poprawić wcięcia pliku TOML, znormalizować kolejność kluczy lub zwalidować składnię TOML z raportowaniem błędów na poziomie wierszaTOML Formatter
  2. 2
    Jeśli chcesz przekonwertować plik konfiguracyjny TOML do JSON do użycia w API, skryptach lub narzędziach oczekujących danych JSONTOML to JSON Converter
  3. 3
    Jeśli chcesz przekonwertować dokument JSON do formatu TOML dla projektów używających TOML jako standardu konfiguracjiJSON to TOML Converter

Do codziennej pracy z TOML TOML Formatter obsługuje formatowanie i walidację w jednym kroku — wklej TOML, a narzędzie albo wygeneruje czysty wynik, albo poinformuje dokładnie, gdzie znajduje się błąd składniowy. Gdy potrzebujesz połączenia TOML i JSON, Konwerter TOML do JSON zachowuje wszystkie typy danych TOML, w tym daty i godziny oraz zagnieżdżone tabele. Do konwersji w odwrotnym kierunku (JSON do TOML) użyj Konwertera JSON do TOML w kategorii JSON. Jeśli debugujesz konfigurację, która nie parsuje się poprawnie, zacznij od TOML Formatter: jego komunikaty błędów zawierają numery wierszy i opisy oczekiwanych tokenów, które są bardziej szczegółowe niż to, co zgłasza większość parserów TOML na poziomie aplikacji.

Często zadawane pytania

Jaka jest różnica między TOML i YAML?
TOML używa jawnej składni nawiasów dla tabel i nie opiera struktury na wcięciach. YAML używa wcięć do definiowania hierarchii, co sprawia, że jest wrażliwy na błędy białych znaków — jedna źle umieszczona spacja może całkowicie zmienić sparsowaną strukturę. TOML ma również natywne typy daty i czasu oraz zabrania duplikowania kluczy, podczas gdy YAML po cichu używa ostatniej wartości, gdy klucz pojawi się dwukrotnie. TOML jest ogólnie preferowany do konfiguracji aplikacji, podczas gdy YAML jest częstszy w manifestach Kubernetes i definicjach potoków CI/CD, gdzie przydatna jest jego obsługa wielu dokumentów oraz kotwice i aliasy.
Jaka jest różnica między TOML i JSON?
JSON to format wymiany danych zaprojektowany do komunikacji między maszynami. TOML to format konfiguracji zaprojektowany do odczytu i edycji przez ludzi. TOML obsługuje komentarze (wiersze zaczynające się od #), natywne typy daty i czasu, ciągi wieloliniowe oraz tabele zmniejszające głębokość zagnieżdżania. JSON nie obsługuje komentarzy, nie ma typu daty i wymaga jawnego zagnieżdżania z nawiasami klamrowymi. JSON jest właściwym wyborem dla ładunków API i przechowywania danych; TOML jest właściwym wyborem dla plików konfiguracyjnych edytowanych ręcznie przez ludzi.
Czy TOML może reprezentować wszystkie struktury danych JSON?
TOML może reprezentować większość struktur JSON, ale istnieją przypadki graniczne. TOML nie obsługuje wartości null — nie ma odpowiednika null z JSON. Klucze TOML muszą być ciągami, co odpowiada kluczom obiektów JSON. Tablice TOML były w v0.5 ograniczone do jednorodnych typów, ale TOML v1.0 zezwala na tablice o mieszanych typach. Głęboko zagnieżdżone obiekty JSON mogą stać się w TOML obszerne, ponieważ każdy poziom zagnieżdżania wymaga osobnego nagłówka tabeli.
Które projekty używają TOML do konfiguracji?
System budowania Rust — Cargo — używa Cargo.toml jako manifestu pakietu. Python przyjął pyproject.toml jako standardowy plik konfiguracji budowania przez PEP 518 (2016) i PEP 621 (2020). Hugo, generator witryn statycznych, domyślnie używa TOML do konfiguracji. InfluxDB używa TOML do konfiguracji serwera. System modułów Go rozważał TOML, ale wybrał własny format; jednak wiele projektów Go nadal używa TOML do konfiguracji na poziomie aplikacji przez biblioteki takie jak BurntSushi/toml i pelletier/go-toml.
Jak TOML obsługuje komentarze?
TOML obsługuje komentarze pełnowierszowe i komentarze końca wiersza za pomocą znaku #. Wszystko od # do końca wiersza jest ignorowane przez parser. Komentarze nie mogą pojawiać się wewnątrz wieloliniowych ciągów podstawowych ani wieloliniowych ciągów literalnych. Podczas konwersji TOML do JSON komentarze są odrzucane, ponieważ JSON nie ma składni komentarzy. Oznacza to, że konwersja w obie strony — z TOML do JSON i z powrotem do TOML — spowoduje utratę wszystkich komentarzy z oryginalnego pliku.
Czym są tablice tabel w TOML?
Tablice tabel używają składni [[podwójnych nawiasów]], aby definiować powtarzające się wpisy tej samej struktury tabeli. Na przykład [[servers]] pojawiające się dwukrotnie tworzy tablicę z dwoma obiektami serwera. W JSON odwzorowuje się to na tablicę obiektów. Tablice tabel są powszechnie używane dla list zależności, definicji serwerów lub konfiguracji wtyczek, gdzie każdy wpis ma ten sam zestaw kluczy.
Czy TOML jest wrażliwy na białe znaki?
TOML nie jest wrażliwy na wcięcia. Wcięcia mają charakter czysto kosmetyczny i nie wpływają na parsowanie. TOML wymaga jednak nowych wierszy do oddzielenia par klucz-wartość — nie można umieścić dwóch par klucz-wartość w tym samym wierszu (poza tabelami inline). Tabele inline muszą mieścić się w jednym wierszu i nie mogą zawierać nowych wierszy. Takie podejście pozwala uniknąć błędów opartych na wcięciach, które są częste w plikach YAML.
Co dzieje się z wartościami datetime TOML podczas konwersji do JSON?
JSON nie ma natywnego typu daty i czasu, więc daty TOML są konwertowane na ciągi ISO 8601. Daty z przesunięciem strefy czasowej (jak 2024-01-15T09:30:00Z) zachowują swoje przesunięcie w reprezentacji ciągu. Lokalne daty i czasy, daty lokalne oraz czasy lokalne są serializowane jako ciągi bez informacji o strefie czasowej. Konwersja jest bezstratna w tym sensie, że oryginalną wartość można z powrotem sparsować z ciągu, ale odbiorca JSON musi wiedzieć, że ma traktować te ciągi jako daty, a nie dowolny tekst.