TOML na JSON

Cargo.toml Rusta, pyproject.toml Pythona, config.toml Hugo: TOML jest wszędzie we współczesnej konfiguracji, a mimo to wiele narzędzi wciąż mówi wyłącznie w JSON. Wklej tutaj TOML i odbierz czytelnie sformatowany JSON: sekcje [tabela] stają się zagnieżdżonymi obiektami, bloki [[tablice tabel]] tablicami obiektów, a daty przechodzą bez zmian jako łańcuchy znaków. Parser pokrywa codzienny rdzeń TOML; jego prawdziwe ograniczenia (wartości wielolinijkowe, tabele inline, klucze z kropkami) są uczciwie wypisane poniżej.

Jak przebiega konwersja

  1. 1

    Wklej swój TOML

    Umieść tekst w polu wejściowym i kliknij Konwertuj na JSON. Komentarze # zajmujące całą linię są pomijane automatycznie.

  2. 2

    Tabele stają się obiektami

    Nagłówek `[server.database]` zamienia się w zagnieżdżone obiekty JSON, po jednym poziomie na każdą nazwę oddzieloną kropką.

  3. 3

    Tablice tabel stają się tablicami

    Bloki `[[users]]` budują tablicę JSON z jednym obiektem na blok.

  4. 4

    Wartości skalarne zachowują typ

    Łańcuchy w cudzysłowach, proste dziesiętne liczby całkowite i zmiennoprzecinkowe oraz true/false stają się natywnymi typami JSON; daty pozostają łańcuchami, dokładnie tak, jak je zapisano.

  5. 5

    Skopiuj JSON

    Wynik jest sformatowany z wcięciem na 4 spacje, klucze zachowują pierwotną kolejność, całość jest gotowa do skopiowania.

Jak mapują się typy

Wartość TOML Wartość JSON Przykład
Łańcuch (basic lub literal) Łańcuch "hello" → "hello"
Liczba całkowita (prosta dziesiętna) Liczba 42 → 42
Liczba zmiennoprzecinkowa (prosta dziesiętna) Liczba 3.14 → 3.14
Wartość logiczna Wartość logiczna true → true
Tablica (jedna linia) Tablica [1, 2, 3] → [1, 2, 3]
Tabela z kluczami Obiekt [server] + port = 8080 → "server": {"port": 8080}
Tablica tabel Tablica obiektów [[users]] + name = "alice" → "users": [{"name": "alice"}]
Data i czas Łańcuch, jak zapisano 2026-04-18T10:00:00Z → "2026-04-18T10:00:00Z"

Wyjście jest zawsze formatowane z wcięciem na 4 spacje, więc tablice i obiekty zajmują kilka linii; powyższa tabela pokazuje wartości w jednej linii dla czytelności. Kolejność kluczy jest zachowywana dokładnie tak, jak występuje w Twoim TOML.

Pełny przykład

title = "My App"

[server]
host = "localhost"
port = 8080

[[users]]
name = "alice"
admin = true

konwertuje się na:

{
    "title": "My App",
    "server": {
        "host": "localhost",
        "port": 8080
    },
    "users": [
        {
            "name": "alice",
            "admin": true
        }
    ]
}

Obsługiwany TOML i prawdziwe ograniczenia

Obsługiwane: nagłówki [tabel] wraz z kropkowanymi nazwami sekcji, [[tablice tabel]], pary klucz = wartość w jednej linii, łańcuchy basic "..." z sekwencjami \n, \t i \", łańcuchy literal '...', proste dziesiętne liczby całkowite i zmiennoprzecinkowe, true/false, jednolinijkowe tablice (zagnieżdżanie dozwolone), komentarze # na całą linię oraz daty przekazywane jako łańcuchy.

Nieobsługiwane, wraz z tym, co zrobić zamiast tego:

  • Łańcuchy wielolinijkowe (""" lub ''') i wielolinijkowe tablice zatrzymują parser błędem. Najpierw zapisz wartość w jednej linii.
  • Tabele inline nie są rozwijane: point = { x = 1, y = 2 } wychodzi jako łańcuch "{ x = 1, y = 2 }", a nie obiekt. Przepisz ją jako osobną sekcję [point]. Linie zależności w Cargo.toml, jak serde = { version = "1.0" }, to klasyczny przypadek.
  • Klucze z kropkami po lewej stronie znaku równości pozostają jednym płaskim kluczem: server.host = "a" daje klucz "server.host", bez zagnieżdżenia. Użyj zamiast tego nagłówka [server]. Kropkowane [nazwy.sekcji] w nagłówkach zagnieżdżają się natomiast poprawnie.
  • Komentarze za wartością nie są usuwane: port = 8080 # main staje się łańcuchem "8080 # main". Trzymaj komentarze w osobnych liniach.
  • Formaty liczb wykraczające poza proste dziesiętne nie są rozpoznawane: 1_000, 0xFF, 5e2, +99, inf i nan wychodzą jako łańcuchy w cudzysłowach. Zapisz 1000, 255, 500, 99.
  • Sekwencje \uXXXX w łańcuchach basic nie są dekodowane. Wklej zamiast nich prawdziwy znak.

Dla pełnego dokumentu TOML 1.0 użyj konwertera z wiersza poleceń, np. toml2json, albo wczytaj plik tomllib z Pythona i stamtąd zrzuć JSON.

Gdzie się to przydaje

  • Szybki podgląd fragmentu TOML jako JSON podczas debugowania.
  • Przekazanie prostych wartości konfiguracji linterom, skryptom lub narzędziom inwentaryzacyjnym, które przyjmują tylko JSON.
  • Generowanie JSON-owych fixture do testów z notatek TOML, które łatwiej pisać ręcznie.
  • Migracja małych, płaskich plików konfiguracji, jakimi jest wiele config.toml Hugo.

Uwagi o podróży w obie strony

  • Komentarze nigdy nie przeżywają: JSON w ogóle nie ma składni komentarzy.
  • Daty pozostają łańcuchami; dalszy kod musi je z powrotem sparsować na obiekty dat.
  • Duże liczby: liczby całkowite pozostają w tekście JSON wartościami 64-bitowymi, ale konsumenci w JavaScripcie tracą precyzję powyżej 2^53. Uważaj na nanosekundowe znaczniki czasu i numeryczne identyfikatory.
  • Kolejność kluczy jest w tym konwerterze zachowywana jak w oryginale; inne narzędzia JSON mogą przesortować klucze przy ponownym zapisie dokumentu.

Kierunek odwrotny

JSON → TOML to trudniejsza podróż, bo JSON ma struktury (głębokie anonimowe zagnieżdżenie, null), których TOML nie ma albo obsługuje inaczej. Większość scenariuszy w obie strony wymaga ręcznych poprawek po stronie TOML.

Najczęściej zadawane pytania

Nie. JSON nie ma składni komentarzy, więc komentarze # na całą linię są po prostu pomijane. Jedno ostrzeżenie: komentarz za wartością nie jest usuwany, więc port = 8080 # main staje się łańcuchem “8080 # main”. Przed konwersją trzymaj komentarze w osobnych liniach.

Nie. Pokrywa codzienny rdzeń: tabele z kropkowanymi nazwami sekcji, tablice tabel, pary klucz = wartość w jednej linii, łańcuchy w cudzysłowach, proste liczby dziesiętne, wartości logiczne, jednolinijkowe tablice i komentarze na całą linię. Łańcuchy i tablice wielolinijkowe, tabele inline, klucze z kropkami oraz formaty liczb takie jak 1_000 czy 0xFF nie są obsługiwane. Dla dokumentów zgodnych z pełną specyfikacją użyj narzędzia CLI, np. toml2json albo tomllib z Pythona.

Typowe pliki konfiguracyjne konwertują się natychmiast. Konwersja działa na naszym serwerze, więc ogromne dokumenty ogranicza rozmiar żądania; dla TOML liczonego w megabajtach lepszy będzie konwerter z wiersza poleceń.

Tak, ten konwerter działa po stronie serwera: TOML wędruje na nasz serwer przez HTTPS, tam jest konwertowany i wraca w tej samej odpowiedzi. Treść nie jest potem przechowywana; zostaje tylko anonimowy licznik użyć. Nie wklejaj sekretów, takich jak hasła czy klucze API.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach