Konwersja JSON do TOML przekształca dane z formatu JavaScript Object Notation na format Tom's Obvious Minimal Language. JSON używa nawiasów klamrowych, nawiasów kwadratowych i kluczy w cudzysłowach do reprezentowania danych strukturalnych. TOML używa płaskiej składni klucz-wartość z nagłówkami sekcji (zwanymi tabelami), która przypomina plik INI, ale z rygorystycznym typowaniem. TOML został zaprojektowany specjalnie do plików konfiguracyjnych, gdzie czytelność dla człowieka jest ważniejsza niż wymiana maszynowa.
TOML stał się domyślnym formatem konfiguracji dla Rust (Cargo.toml), pakietowania Python (pyproject.toml), statycznych stron Hugo, ustawień wdrożenia Netlify i wielu narzędzi CLI. Gdy dane źródłowe istnieją jako JSON — z odpowiedzi API, wyeksportowanej konfiguracji lub wygenerowanego pliku — a docelowy system oczekuje TOML, potrzebny jest konwerter, który mapuje obiekty JSON na tabele TOML, tablice JSON na tablice TOML i dokładnie zachowuje każdy typ danych.
Konwersja JSON do TOML online to najszybszy sposób na wygenerowanie poprawnego TOML z istniejących danych JSON. Konwersja obsługuje mapowanie typów automatycznie: ciągi JSON stają się ciągami TOML, liczby JSON stają się liczbami całkowitymi lub zmiennoprzecinkowymi TOML, wartości logiczne są mapowane bezpośrednio, a obiekty JSON stają się tabelami TOML. Jedynym wyjątkiem jest null — TOML nie ma typu null, więc wartości null są pomijane lub konwertowane na puste ciągi w zależności od konwertera.
Dlaczego warto używać tego konwertera JSON do TOML?
TOML to format, którego oczekują pliki konfiguracyjne; JSON to format produkowany przez API i narzędzia. Ten konwerter wypełnia lukę, pozwalając przenosić dane między tymi dwoma formatami bez ręcznego przepisywania.
⚡
Natychmiastowa konwersja
Wklej JSON i natychmiast otrzymaj wynik w TOML. Konwersja działa podczas pisania — bez komunikacji z serwerem ani przesyłania plików.
🔒
Przetwarzanie z zachowaniem prywatności
Cała konwersja odbywa się lokalnie w przeglądarce. Sekrety konfiguracyjne, klucze API i dane uwierzytelniające bazy danych zawarte w JSON nigdy nie opuszczają Twojego urządzenia.
🔀
Pełna obsługa struktury
Zagnieżdżone obiekty stają się tabelami TOML, tablice obiektów stają się tablicami tabel ([[table]]), a tablice z mieszanymi typami są obsługiwane poprawnie.
📋
Bez rejestracji
Otwórz stronę i konwertuj. Bez rejestracji, bez rozszerzenia do instalacji, bez zależności CLI. Działa na każdym urządzeniu z nowoczesną przeglądarką.
Przypadki użycia konwertera JSON do TOML
Konfiguracja projektów Rust
Cargo.toml definiuje zależności, funkcje i ustawienia kompilacji dla projektów Rust. Konwertuj listy zależności JSON lub wygenerowane konfiguracje bezpośrednio do formatu Cargo.toml.
Pakietowanie Python (pyproject.toml)
PEP 518 i PEP 621 ustanowiły pyproject.toml jako plik metadanych projektu Python. Konwertuj istniejące metadane pakietów JSON do wymaganej struktury TOML.
Konfiguracja statycznych stron
Hugo, Netlify i inne generatory statycznych stron używają plików konfiguracyjnych TOML. Podczas migracji z konfiguracji opartej na JSON lub programowego generowania konfiguracji konwertuj wynik do TOML.
DevOps i infrastruktura
Narzędzia takie jak Terraform (dla niektórych dostawców), Consul i różne środowiska uruchomieniowe kontenerów akceptują konfigurację TOML. Konwertuj wyeksportowane ustawienia JSON do TOML bez ręcznego przepisywania wartości.
Odpowiedź API do pliku konfiguracyjnego
Interfejsy API REST zwracają JSON. Gdy potrzebujesz użyć tych danych jako konfiguracji TOML — na przykład flag funkcji lub ustawień środowiska — wklej odpowiedź i uzyskaj poprawny TOML.
Nauka składni TOML
Studenci i programiści nieznający TOML mogą wklejać znane struktury JSON i obserwować odpowiadające im wyniki TOML.
Porównanie JSON i TOML
JSON i TOML pokrywają się pod względem możliwości, ale różnią się składnią, obsługą typów i przeznaczeniem. Tabela poniżej pokazuje różnice wpływające na konwersję.
TOML ma reguły różniące się od JSON w sposób wpływający na wynik konwersji. Te cztery problemy powodują najczęstsze nieporozumienia.
Brak typu null w TOML
JSON obsługuje null jako wartość pierwszoklasową. TOML nie ma żadnego typu null. Podczas konwersji wartości null muszą być obsłużone — poprzez całkowite pominięcie klucza, użycie pustego ciągu lub wybranie wartości zastępczej. Oznacza to, że konwersja w obie strony JSON → TOML → JSON może nie odtworzyć oryginalnych wartości null.
Tablice heterogeniczne są ograniczone
Tablice JSON mogą swobodnie mieszać typy: [1, "dwa", true]. TOML v1.0.0 wymaga, aby wszystkie elementy tablicy były tego samego typu. Jeśli JSON zawiera tablice z mieszanymi typami, konwerter musi albo przekształcić wszystkie elementy na ciągi, albo zgłosić błąd. Sprawdź wynik, gdy tablice źródłowe zawierają mieszane typy.
Głęboko zagnieżdżone obiekty stają się rozwlekłe
JSON obsługuje głębokie zagnieżdżanie naturalnie za pomocą zagnieżdżonych nawiasów. TOML używa kluczy z kropkami lub łańcuchowych nagłówków [table.subtable.key], które mogą stać się długie przy głęboko zagnieżdżonych strukturach. Wynik jest poprawny, ale mniej zwięzły niż oryginał JSON.
Ograniczenia nazewnictwa kluczy
Gołe klucze TOML mogą zawierać wyłącznie litery ASCII, cyfry, myślniki i podkreślenia. Klucze JSON mogą być dowolnym ciągiem. Jeśli JSON zawiera klucze ze spacjami, kropkami lub znakami specjalnymi, te klucze muszą być ujęte w cudzysłów w wynikowym TOML. Większość konwerterów obsługuje to automatycznie, ale zweryfikuj wynik, jeśli klucze zawierają nietypowe znaki.
Przykłady kodu
Programowa konwersja JSON do TOML wymaga biblioteki do serializacji TOML w większości języków. Biblioteki standardowe parsują JSON; do generowania TOML potrzebny jest dedykowany pakiet.
import json
import tomli_w # pip install tomli_w
json_str = '{"title": "My App", "database": {"host": "localhost", "port": 5432}}'
data = json.loads(json_str)
toml_str = tomli_w.dumps(data)
print(toml_str)
# → title = "My App"
# →
# → [database]
# → host = "localhost"
# → port = 5432
Go
package main
import (
"encoding/json"
"fmt"
"github.com/pelletier/go-toml/v2"
)
func main() {
jsonStr := `{"title":"My App","database":{"host":"localhost","port":5432}}`
var data map[string]interface{}
json.Unmarshal([]byte(jsonStr), &data)
tomlBytes, _ := toml.Marshal(data)
fmt.Println(string(tomlBytes))
// → title = 'My App'
// →
// → [database]
// → host = 'localhost'
// → port = 5432
}
CLI (yj / remarshal)
# Using yj (https://github.com/sclevine/yj)
echo '{"title":"My App","port":3000}' | yj -jt
# → title = "My App"
# → port = 3000
# Using remarshal (pip install remarshal)
echo '{"title":"My App","port":3000}' | remarshal -if json -of toml
# → title = "My App"
# → port = 3000
Często zadawane pytania
Czy konwersja JSON do TOML jest bezstratna?
Dla większości danych tak. Ciągi, liczby całkowite, liczby zmiennoprzecinkowe, wartości logiczne, obiekty i tablice mają bezpośrednie odpowiedniki w TOML. Dwa wyjątki to null (TOML nie ma typu null, więc wartości null są pomijane lub zastępowane) i tablice z mieszanymi typami (TOML wymaga jednolitych typów elementów tablicy). Jeśli JSON unika tych dwóch wzorców, konwersja jest w pełni bezstratna.
Co dzieje się z wartościami null JSON w TOML?
TOML nie ma typu null. Konwertery zazwyczaj pomijają klucze z wartościami null w wynikowym pliku, ponieważ nie ma możliwości reprezentowania "klucz istnieje, ale nie ma wartości" w TOML. Niektóre konwertery pozwalają wybrać użycie pustego ciągu zamiast tego. Sprawdź wynik, jeśli wartości null mają znaczenie w Twoich danych.
Czy TOML może reprezentować zagnieżdżone obiekty JSON?
Tak. Obiekty JSON stają się tabelami TOML. Zagnieżdżony obiekt taki jak {"database": {"host": "localhost"}} jest konwertowany na nagłówek tabeli [database] z host = "localhost" poniżej. Dowolna głębokość zagnieżdżenia jest obsługiwana przez klucze z kropkami lub zagnieżdżone nagłówki tabel.
Dlaczego Rust i Python używają TOML zamiast JSON?
TOML obsługuje komentarze, które są niezbędne do dokumentowania wyborów konfiguracyjnych. Produkuje też czystszy wynik dla płaskich ustawień klucz-wartość, które stanowią większość metadanych pakietów. JSON zabrania komentarzy (RFC 8259), co utrudnia jego utrzymanie jako formatu konfiguracji edytowanego przez człowieka.
Jak TOML obsługuje daty i godziny?
TOML ma natywne typy daty i godziny: datetime ze strefą czasową (2024-01-15T10:30:00Z), lokalna data i godzina, lokalna data oraz lokalna godzina. JSON nie ma typu daty — daty są przechowywane jako ciągi. Podczas konwersji JSON do TOML ciągi przypominające daty pozostają ciągami, chyba że konwerter jawnie wykrywa i konwertuje wzorce ISO 8601.
Czy bezpiecznie jest wklejać sekrety i dane uwierzytelniające do tego narzędzia?
Tak. Konwersja odbywa się całkowicie w przeglądarce przy użyciu JavaScript. Żadne dane nie są wysyłane na żaden serwer. Możesz to zweryfikować, otwierając narzędzia deweloperskie przeglądarki, przechodząc do zakładki Sieć i potwierdzając, że podczas konwersji nie są wykonywane żadne żądania.
Którą wersję TOML stosuje wynik?
Wynik jest zgodny z TOML v1.0.0, wydanym w styczniu 2021 roku i stanowiącym aktualną stabilną specyfikację. Ta wersja wymaga jednolitych typów w tablicach, obsługuje klucze z kropkami i definiuje format daty i godziny. Specyfikacja jest utrzymywana na stronie toml.io.