JSON do TOML
Bezpłatny konwerter online, który szybko zamienia obiekty JSON na pliki konfiguracyjne TOML v1.0. Automatycznie tworzy zagnieżdżone tabele ([section]), podtabele ([a.b]) i tablice tabel ([[items]]), dzięki czemu dobrze sprawdza się przy przygotowywaniu Cargo.toml oraz pyproject.toml. Cała konwersja odbywa się lokalnie w przeglądarce.
Powiązane Rekomendacje
Czym jest TOML? Dlaczego konwertować JSON na TOML?
TOML oznacza Tom's Obvious, Minimal Language (Oczywisty, Minimalny Język Toma), jest formatem plików konfiguracyjnych wydanym w 2013 roku przez współzałożyciela GitHub Toma Preston-Wernera. Jego cele projektowe to: oczywista składnia (obvious), minimalizm (minimal), łatwość czytania dla ludzi, jednoznaczność bez dwuznaczności. TOML 1.0 stał się stabilną wersją w 2021 roku (toml-lang/toml), obecnie jest domyślnym formatem konfiguracyjnym dla wielu narzędzi ekosystemu Rust Cargo, Python PEP 621 (pyproject.toml), Hugo, Prettier, Deno, Taplo i wielu innych.
TOML w scenariuszach plików konfiguracyjnych ma kilka wyraźnych zalet w porównaniu z JSON i YAML: ①brak pułapek wcięć YAML — YAML używa wcięć do reprezentowania hierarchii, błędy wcięć całkowicie zmieniają znaczenie konfiguracji (np. lista staje się stringiem), TOML jawnie deklaruje hierarchię przez [table], bez dwuznaczności; ②lepszy od JSON do konfiguracji — cudzysłowy i nawiasy klamrowe JSON są bardzo rozwlekłe w złożonych konfiguracjach, zapis key = value w TOML jest czystszy, natywnie obsługuje komentarze; ③jasny system typów — TOML rozróżnia siedem typów: integer/float/string/boolean/datetime/array/table, bez dwuznaczności JSON "czy liczba to integer czy float" i bez problemu Norwegii z YAML 1.1 (NO parsowane jako boolean false).
Rdzeń TOML składa się z czterech elementów: ①pary klucz-wartość (key = value) reprezentują podstawowe elementy konfiguracji; ②tabela (Table) deklarowana przez [name] reprezentuje nazwane grupy, obsługuje zagnieżdżanie ([a.b.c]); ③tablice tabel (Array of Tables) deklarowane przez [[name]] reprezentują listy jednorodnych obiektów, często używane do konfiguracji wielu środowisk, list wtyczek, list zależności; ④tablice (Array) obsługują typy podstawowe inline ([1, 2, 3]) i zapis wieloliniowy. Narzędzie podczas konwersji inteligentnie rozpoznaje strukturę JSON i automatycznie wybiera najbardziej odpowiednią składnię TOML.
Typowe motywacje konwersji JSON do TOML: ①projekt migruje z ekosystemu Node.js do nowego ekosystemu Rust/Python, format konfiguracji musi zostać ujednolicony do TOML; ②zespół decyduje się scentralizować rozproszone konfiguracje JSON w TOML, wykorzystując hierarchię [section] TOML, aby uniknąć obciążenia czytelniczego głębokiego zagnieżdżania JSON; ③zastąpienie YAML przez TOML w celu wyeliminowania dziwnych błędów spowodowanych wcięciami; ④wstrzykiwanie metadanych JSON w CI/CD do narzędzi downstream jako TOML. Narzędzie pokrywa potrzeby konwersji wszystkich tych scenariuszy.
Proces konwersji to w istocie mapowanie drzewa składni: JSON.parse() parsuje tekst do obiektu JavaScript (AST), następnie rekurencyjnie przechodzi każdy węzeł — stringi, liczby, boole, null mapowane na odpowiadające skalary TOML; tablice dzielone na tablice inline lub tablice tabel w zależności od typu elementów; zagnieżdżone obiekty mapowane na tabele lub pod-tabele. Ostatecznie tekst jest wyprowadzany zgodnie ze specyfikacją TOML. To strukturalne mapowanie gwarantuje, że wynik konwersji jest w 100% poprawny składniowo, bez błędów formatowania.
Przypadki użycia
- Gdy chcesz szybko przygotować szkic Cargo.toml dla projektu Rust
- Gdy przenosisz ustawienia projektu Python do pliku pyproject.toml
- Gdy konfiguracje Hugo, Deno albo Prettier trzeba przepisać z JSON do TOML
- Gdy zespół ujednolica format konfiguracji CI/CD lub DevOps wokół TOML
- Gdy porównujesz istniejący JSON z TOML i chcesz wybrać czytelniejszy format
- Gdy uczysz się składni TOML na przykładach z tabelami zagnieżdżonymi i tablicami tabel
Jak Używać
- Wklej JSON do lewego edytora albo wczytaj plik .json / .txt. W razie potrzeby użyj gotowego przykładu
- Narzędzie od razu przeanalizuje dane i wygeneruje TOML v1.0 w prawym panelu
- Jeśli pojawi się błąd składni, sprawdź komunikat i w razie potrzeby popraw najpierw JSON
- Skopiuj gotowy wynik albo pobierz go jako config.toml do dalszej pracy
Funkcje
- Generuje wynik zgodny z TOML v1.0, gotowy do użycia w Cargo, Poetry, Hugo, Prettier i innych narzędziach obsługujących TOML
- Automatycznie zamienia wielopoziomowe obiekty JSON na tabele TOML w stylu [a] oraz [a.b.c], zachowując czytelny układ
- Tablice obiektów są konwertowane do tablic tabel [[items]], co dobrze pasuje do list hostów, zależności i środowisk
- Escapuje cudzysłowy, backslashe, nowe linie i tabulatory zgodnie z zasadami TOML
- Dopasowuje stringi, liczby, wartości logiczne i null do odpowiednich typów TOML; null zmienia na pusty string ""
- Pokazuje wynik na żywo: wklejasz JSON po lewej, a po prawej od razu widzisz TOML
- Pozwala wczytać gotowy przykład z obiektami zagnieżdżonymi, tablicami i tablicami tabel
- Obsługuje pliki .json / .txt oraz pobieranie wyniku jako config.toml
- Na desktopie możesz przeciągać szerokość paneli, a ostatnie 200 pozycji historii zapisuje się automatycznie
- Po konwersji możesz przejść do formatowania JSON i dalej czyścić lub sprawdzać dane wejściowe
- Wszystko działa lokalnie w przeglądarce, więc poufne konfiguracje nie opuszczają urządzenia
Często Zadawane Pytania
Jak przekonwertować JSON na plik konfiguracyjny TOML?
Wklej zawartość JSON do pola po lewej, narzędzie automatycznie sparsuje obiekt JSON i przekonwertuje go na format pliku konfiguracyjnego zgodny ze specyfikacją TOML v1.0. Pary klucz-wartość stają się key = value, zagnieżdżone obiekty stają się tabelami TOML ([section]) i pod-tabelami ([a.b]), tablice są automatycznie dzielone na tablice inline lub tablice tabel ([[items]]) w zależności od zawartości. Kliknij przycisk przykładu, aby załadować zagnieżdżony przykład i zobaczyć efekt, wynik konwersji można pobrać jako plik config.toml do użycia w projekcie.
Jakie scenariusze pasują do TOML, YAML i JSON?
JSON nadaje się do wymiany danych API i komunikacji frontend-backend, jest de facto standardem dla interfejsów REST; YAML nadaje się do złożonych struktur danych i konfiguracji CI/CD (GitHub Actions, Ansible, Kubernetes), oferuje wysoką czytelność, obsługuje komentarze i wielokrotne dokumenty; TOML nadaje się do scenariuszy z jasnymi plikami konfiguracyjnymi (Rust/Cargo, Python pyproject, Hugo, Prettier), ma prostą składnię, mało dwuznaczności, brak pułapek wcięć. Żaden z tych formatów nie jest jednoznacznie lepszy, kluczem jest dopasowanie do scenariusza — dla plików konfiguracyjnych zalecany jest TOML, dla CI/CD zalecany jest YAML, dla danych API używaj JSON.
Jak zagnieżdżone obiekty JSON są reprezentowane w TOML?
TOML reprezentuje zagnieżdżone struktury za pomocą tabel (Table). Jednopoziomowe zagnieżdżenie jak {"database": {"host": "localhost"}} konwertowane jest na [database] host = "localhost"; wielopoziomowe zagnieżdżenie jak {"server": {"ssl": {"enabled": true}}} konwertowane jest na [server.ssl] enabled = true. Narzędzie automatycznie rozpoznaje poziomy zagnieżdżenia i generuje odpowiadające ścieżki nagłówków tabel, bez ręcznej regulacji.
Jak tablice JSON są konwertowane w TOML?
TOML rozróżnia dwie składnie tablic: ①tablice typów podstawowych (np. ["a", "b", 1, 2]) konwertowane są na tablicę inline key = ["a", "b", 1, 2], w nawiasach kwadratowych oddzielone przecinkami; ②tablice obiektów (np. [{"name": "primary"}, {"name": "replica"}]) konwertowane są na tablice tabel [[items]], każdy obiekt poprzedzony nagłówkiem [[items]], pola wypłaszczone poniżej. Narzędzie automatycznie rozpoznaje typ tablicy i wybiera najbardziej odpowiednią składnię TOML.
Czy wygenerowany TOML może być użyty bezpośrednio jako Cargo.toml?
Tak. Narzędzie ściśle przestrzega oficjalnej specyfikacji TOML v1.0 (github.com/toml-lang/toml), wyjściowy TOML może być używany bezpośrednio z Cargo (menedżer pakietów Rust), Poetry/pyproject (menedżer pakietów Python), Hugo (statyczna strona), Prettier, Deno, Taplo i innymi narzędziami obsługującymi format TOML. Uwaga: jeśli potrzebujesz specyficznych sekcji [package] / [dependencies] dla Cargo.toml, uzupełnij odpowiednie pola (name, version, edition, tabele zależności crate itp.) zgodnie ze specyfikacją Cargo.
Co stanie się z wartościami null w JSON?
TOML nie ma typu null, więc null w JSON jest konwertowany na pusty string "" (najczęstszy odpowiednik). Jeśli twój konsument TOML ma specjalne wymagania dla pól null (np. pole optional jakiegoś crate w [dependencies]), dostosuj odpowiednią linię ręcznie po konwersji.
Jak obsługiwane są cudzysłowy i znaki nowej linii w stringach?
Stringi TOML muszą być owinięte podwójnymi cudzysłowami, wewnętrzne cudzysłowy, ukośniki, znaki nowej linii (\n), znaki powrotu karetki (\r), tabulatory (\t) muszą być escapowane zgodnie z regułami TOML. Narzędzie automatycznie obsługuje te escape'y, np. He said "Hello" w JSON konwertowane jest na He said \"Hello\" w TOML, znaki nowej linii w stringach wieloliniowych stają się \n. Nie musisz ręcznie escapować, wyjście narzędzia może być poprawnie odczytane przez parser TOML.
Czy wygenerowany TOML obsługuje typ daty i czasu?
Narzędzie akceptuje tylko tekst JSON jako wejście, a standard JSON nie ma natywnego typu daty/czasu (powszechną praktyką jest string ISO 8601, np. "2026-01-01T00:00:00Z"). Po konwersji TOML zachowa te wartości jako stringi (key = "2026-01-01T00:00:00Z"). Jeśli potrzebujesz natywnych typów TOML local datetime/offset datetime, ręcznie zmień string na dosłowny literał daty TOML (np. 2026-01-01T00:00:00).
Czy konwersja lokalna w przeglądarce przesyła dane konfiguracyjne?
Nie. Całe parsowanie JSON, generowanie TOML i escapowanie stringów odbywa się lokalnie w silniku JavaScript twojej przeglądarki, nic nie jest wysyłane przez sieć do żadnego serwera, działa nawet bez internetu. JSON zawierający wrażliwe informacje konfiguracyjne, takie jak hasła baz danych, klucze API, adresy sieci wewnętrznej, można bezpiecznie konwertować.
Rozwiązywanie problemów
Błąd JSON "Unexpected token" — jak rozwiązać?
To błąd składni JSON. Częste przyczyny: ①końcowy przecinek (trailing comma), np. {"a":1,}; ②stringi owinięte pojedynczymi cudzysłowami, np. {'a':1} (JSON wymaga podwójnych cudzysłowów); ③klucze bez cudzysłowów, np. {a:1}; ④komentarze // lub /* */ (standard JSON ich nie obsługuje). Możesz użyć narzędzia naprawy JSON na tej stronie, aby jednym kliknięciem automatycznie naprawić te typowe błędy, a następnie wkleić ponownie do konwersji.
Skonwertowany TOML zgłasza błąd "invalid TOML" w Cargo?
Zwykle jest to konflikt nazw pól lub brak wymaganych pól. Parser TOML jest bardzo surowy wobec ścieżek nagłówków tabel, zduplikowanych kluczy i escapowania znaków. Sprawdź: ①czy w tym samym zakresie nie ma zduplikowanych kluczy; ②czy znaki specjalne w stringach są poprawnie escapowane (cudzysłowy, ukośniki, znaki nowej linii); ③czy zagnieżdżenie nie jest zbyt głębokie (TOML 1.0 zaleca nie więcej niż 5 poziomów); ④czy brakuje wymaganych sekcji Cargo jak [package]. Wyjście narzędzia jest w 100% poprawne składniowo, problem zwykle leży po stronie konsumenta (np. czy nazwy pól są zgodne ze specyfikacją Cargo).
Tablica obiektów została skonwertowana na tablicę inline zamiast tablicy tabel?
Tablica JSON jest konwertowana na tablicę inline ["a","b"] tylko wtedy, gdy wszystkie elementy są typami podstawowymi (string/liczba/boolean/null), tablice obiektów (np. [{"name":"x"}]) są konwertowane na tablice tabel [[items]]. Jeśli twoja tablica obiektów została błędnie rozpoznana jako tablica inline, oznacza to, że w tablicy znajdują się elementy niebędące obiektami. Sprawdź dane: ①czy w tablicy nie ma pomieszanych stringów lub liczb; ②czy poziom zagnieżdżenia nie został przerwany.
Niektóre klucze po konwersji mają cudzysłowy — jak je usunąć?
TOML pozwala, aby klucze zawierały tylko litery, cyfry, podkreślenia i myślniki ([A-Za-z0-9_-]). Jeśli klucze JSON zawierają znaki specjalne (spacje, kropki, chińskie znaki, emoji, słowa zarezerwowane), narzędzie automatycznie owinie je podwójnymi cudzysłowami, aby zachować poprawność TOML, np. {"my key": 1} konwertowane jest na "my key" = 1. Jeśli twoje narzędzie downstream nie akceptuje kluczy z cudzysłowami, ręcznie zmień klucze JSON na dozwolone znaki (A-Z a-z 0-9 _ -) przed konwersją.
Przeglądarka zacina się przy konwersji dużych plików — co robić?
Narzędzie jest zoptymalizowane do konwersji w czasie rzeczywistym (konwersja podczas pisania), ale bardzo duże pliki (>1MB, kilkaset tysięcy linii) mogą nadal stanowić wyzwanie. Sugestie: ①najpierw użyj narzędzia formatowania JSON, aby sprawdzić, czy JSON jest poprawny; ②konwertuj partiami (np. dzieląc po kluczach najwyższego poziomu); ③upewnij się, że przeglądarka ma wystarczająco pamięci; ④dla bardzo dużych plików konfiguracyjnych (10MB+) zalecane są narzędzia CLI jak taplo, tomlq, narzędzie jest przeznaczone do codziennych scenariuszy konfiguracyjnych (KB do kilkuset KB).
Słownik
- TOML
- Tom's Obvious, Minimal Language, język formatu zaprojektowany dla plików konfiguracyjnych, o prostej i jednoznacznej składni, domyślny format konfiguracyjny dla Rust Cargo / Python pyproject / Hugo.
- Table (tabela)
- Nazwana grupa deklarowana przez [name] w TOML, odpowiednik obiektu w JSON, obsługuje zagnieżdżanie kropkowe jak [server.ssl].
- Array of Tables (tablice tabel)
- Lista jednorodnych obiektów deklarowana przez [[name]] w TOML, każda sekcja [[name]] zawiera wszystkie pola obiektu, odpowiednik tablicy obiektów w JSON.
- Inline Table (tabela inline)
- Składnia obsługiwana w TOML 1.0, używa { key = value, key = value } do deklarowania prostego obiektu w jednej linii, odpowiednia dla płaskich obiektów bez nazwanych.
- Cargo.toml
- Standardowy plik konfiguracyjny projektu Rust, definiuje metadane package, dependencies, dev-dependencies, features itp., format TOML.
- pyproject.toml
- Standardowy plik konfiguracyjny projektu Python (PEP 621), definiuje build-system, metadane project, dependencies, konfigurację tool (black/pytest/mypy itp.).
- TOML v1.0
- TOML 1.0 to stabilna wersja oficjalnie wydana w 2021 roku, narzędzie ściśle przestrzega tej specyfikacji (github.com/toml-lang/toml/blob/main/toml.md).
- Zagnieżdżony obiekt JSON
- Obiekt w JSON zawierający inne obiekty, odpowiada Table TOML ([section]) lub pod-tabeli ([a.b.c]).
- Escape TOML
- Znaki specjalne w stringach TOML jak cudzysłowy, ukośniki, znaki nowej linii muszą być escapowane ukośnikiem (\", \\, \n), narzędzie obsługuje to automatycznie.
- Plik konfiguracyjny (Config File)
- Plik ustawień odczytywany przy uruchomieniu aplikacji, oddzielony od kodu dla łatwości modyfikacji. TOML jest jednym z de facto standardów plików konfiguracyjnych.
Tabela mapowania typów JSON na TOML
Narzędzie konwertuje typy JSON na typy TOML zgodnie z następującymi regułami:
| Typ JSON | Typ TOML | Składnia TOML | Uwaga |
|---|---|---|---|
| string | string | key = "value" | Stringi TOML muszą być owinięte podwójnymi cudzysłowami |
| integer | integer | key = 8080 | Integer bez kropki dziesiętnej |
| float | float | key = 3.14 | Float musi mieć kropkę dziesiętną |
| boolean | boolean | key = true | TOML używa tylko małych liter true / false |
| null | string (pusty) | key = "" | TOML nie ma typu null, konwertowane na pusty string |
| array[primitive] | array | key = ["a", "b"] | Tablice typów podstawowych używają nawiasów inline |
| array[object] | array of tables | [[items]]
key = value | Tablice obiektów używają [[name]] |
| object | table | [name]
key = value | Obiekty deklarowane przez [name] |
Tabela escapowania stringów TOML
Znaki specjalne, które muszą być escapowane w stringach TOML:
| Oryginalny znak | Po eskapowaniu TOML | Nazwa | Przykładowy scenariusz |
|---|---|---|---|
" | \" | Cudzysłów | Zagnieżdżone cudzysłowy w stringu |
\ | \\ | Ukośnik | Ścieżka Windows C:\Users |
nowa linia | \n | Newline | Kompresja stringów wieloliniowych |
tabulator | \t | Tab | Pole tabulatora |
powrót karetki | \r | Carriage Return | Złamanie linii Windows CRLF |
\b | \b | Backspace | Znak backspace |
\f | \f | Form Feed | Znak form feed |
U+0000 | \u0000 | Unicode 0 | Znaki kontrolne muszą używać escape'u \u |
Przykłady konwersji JSON do TOML
Wyjście TOML odpowiadające złożonym strukturom JSON:
| Struktura | Przykład |
|---|---|
| Wejście JSON | { "name": "app", "port": 8080 } |
| Wyjście TOML | name = "app"
port = 8080 |
| Wejście JSON | { "server": { "host": "0.0.0.0", "port": 443 } } |
| Wyjście TOML | [server]
host = "0.0.0.0"
port = 443 |
| Wejście JSON | { "hosts": [{"ip":"10.0.0.1"},{"ip":"10.0.0.2"}] } |
| Wyjście TOML | [[hosts]]
ip = "10.0.0.1"
[[hosts]]
ip = "10.0.0.2" |
Privacy & Security
Parsowanie JSON, generowanie TOML, escapowanie ciągów i odczyt plików odbywają się lokalnie w JavaScript przeglądarki. Wprowadzony JSON i wygenerowany TOML nie są wysyłane na serwer ani zapisywane do analizy. Dzięki temu możesz używać narzędzia także do konfiguracji zawierających hasła, klucze API i adresy wewnętrzne. Historia lokalna trafia wyłącznie do localStorage przeglądarki i znika po wyczyszczeniu pamięci podręcznej.
Authoritative References
- toml-langOficjalna specyfikacja TOML v1.0
- GitHubRepozytorium GitHub TOML
- WikipediaTOML - Wikipedia
- Rust oficjalneReferencje pól Cargo.toml
- JSON Compress
- Konwerter CSV na JSON
- JSON na CSV
- JSON Diff
- JSON Escape / Unescape
- Spłaszczanie JSON
- JSON Formatter
- Generator JSON
- Zapytanie JSONPath
- Scal JSON
- Naprawa JSON
- Walidator JSON Schema
- Sortowanie JSON
- JSON Stringify
- JSON do HTML
- JSON do Javy
- JSON na Markdown
- JSON do SQL
- JSON do TOML
- JSON do TypeScript
- XML na JSON
- Konwertuj JSON do XML
- YAML na JSON
- JSON → YAML
- JSON na Go
- JSON na Rust
- JSON to Swift
- JSON na C#
- JSON na C++
- JSON na PHP
- JSON na Python