Utilia

Konwerter TOML na JSON

Konwertuj TOML na JSON i JSON na TOML w przeglądarce. Obsługuje tabele, tablice tabel, daty i 64-bitowe liczby całkowite. Nic nie jest przesyłane.

Konwersja

Jak przekonwertować TOML na JSON

  1. Wybierz kierunek: TOML → JSON (domyślnie) lub JSON → TOML.
  2. Wklej dane albo kliknij Otwórz plik, aby wczytać plik .toml lub .json (do 10 MB).
  3. Przy TOML → JSON wybierz Wcięcie (2 lub 4 spacje) i zdecyduj, czy zaznaczyć Duże liczby całkowite jako tekst. Przy JSON → TOML zostaw lub odznacz Pomiń wartości null.
  4. Zaznacz Sortuj klucze, jeśli każda tabela ma być uporządkowana alfabetycznie.
  5. Wynik aktualizuje się podczas pisania; Konwertuj uruchamia konwersję ponownie na żądanie. Błędy pokazują linię i kolumnę problemu.
  6. Skopiuj lub pobierz wynik. Odwróć kierunek przenosi wynik do pola wejściowego, aby przekonwertować go z powrotem.

TOML i JSON obok siebie

TOML (Tom’s Obvious Minimal Language) to format konfiguracji stojący za Cargo.toml w Rust, pyproject.toml w Pythonie, stronami Hugo i Netlify oraz wieloma narzędziami wiersza poleceń. Został zaprojektowany tak, aby ludzie mogli go łatwo czytać i edytować, i bezpośrednio odwzorowuje się na drzewo tabel (obiektów), tablic i wartości podobne do JSON.

[package]
name = "demo"
version = "0.1.0"

[[bin]]
name = "cli"

staje się

{"package": {"name": "demo", "version": "0.1.0"}, "bin": [{"name": "cli"}]}
  • Nagłówek [table] staje się obiektem JSON, a klucze z kropkami, np. a.b.c = 1, stają się zagnieżdżonymi obiektami.
  • Tablica tabel [[bin]] staje się tablicą obiektów JSON.
  • Tabele w linii { x = 1 } i tablice działają zgodnie z oczekiwaniami. Komentarze są pomijane, bo JSON ich nie ma.

Czym różnią się oba formaty

Daty i godziny. TOML ma cztery natywne typy daty i czasu, JSON – żadnego. Konwerter zapisuje je jako teksty ISO 8601 i zachowuje ich rodzaj: data i godzina z przesunięciem zostaje 1979-05-27T07:32:00.000-08:00, data lokalna – 1979-05-27, a godzina lokalna – 07:32:00.000. Ułamki sekund są zachowywane z dokładnością do milisekundy. Konwersja z powrotem do TOML daje zwykłe teksty, bo w JSON nic nie oznacza ich jako dat.

Liczby całkowite. Liczby całkowite w TOML są 64-bitowe ze znakiem, od −9 223 372 036 854 775 808 do 9 223 372 036 854 775 807. Liczby w JavaScripcie, używane przez większość parserów JSON, są dokładne tylko do 2^53 (9 007 199 254 740 991). Większe liczby z TOML są zapisywane ze wszystkimi cyframi, co jest poprawnym JSON, ale program, który odczyta je jako liczby zmiennoprzecinkowe, je zaokrągli; zaznacz Duże liczby całkowite jako tekst, aby tego uniknąć. Liczba spoza zakresu 64 bitów jest odrzucana, zgodnie ze specyfikacją TOML.

Specjalne wartości zmiennoprzecinkowe. inf, -inf i nan nie mają odpowiednika w JSON, więc są zapisywane jako teksty "inf", "-inf" i "nan".

JSON → TOML. Dokument TOML jest zawsze tabelą, więc JSON musi mieć na najwyższym poziomie obiekt. TOML nie ma null: domyślnie wartości null są pomijane, a komunikat podaje ich liczbę; odznacz Pomiń wartości null, aby zamiast tego dostać błąd z lokalizacją pierwszej z nich. JSON nie odróżnia 1 od 1.0, więc liczby całkowite stają się liczbami całkowitymi TOML, a liczby zbyt duże dla 64 bitów – zmiennoprzecinkowymi. W aktualnych przeglądarkach duże liczby całkowite z twojego JSON zachowują dokładne cyfry.

Najczęściej zadawane pytania

Czy moja konfiguracja jest gdzieś wysyłana?

Nie. Konwersja działa w całości w twojej przeglądarce, więc klucze API i sekrety z plików konfiguracyjnych nigdy nie opuszczają twojego komputera.

Dlaczego kolejność kluczy w wyniku TOML się zmieniła?

TOML wymaga, aby w każdej tabeli zwykłe pary klucz–wartość stały przed podtabelami, więc konwerter zapisuje najpierw wartości, potem [tabele], a na końcu [[tablice tabel]]. Dane są te same.

Czy komentarze z TOML są zachowywane?

Nie. JSON nie ma komentarzy, więc przy konwersji TOML → JSON przepadają i przy konwersji odwrotnej nie ma czego przywrócić.

Która wersja TOML jest obsługiwana?

TOML 1.0, w tym klucze z kropkami, tabele w linii, tablice tabel, liczby szesnastkowe, ósemkowe i binarne oraz wszystkie cztery typy daty i czasu.

Dlaczego moja data jest w JSON tekstem?

JSON nie ma typu daty. Teksty w formacie ISO 8601 to przyjęta konwencja i większość języków programowania potrafi je bezpośrednio odczytać.