ToolDeck

JSON to TOML

Převeďte JSON do formátu TOML

Zkusit příklad

JSON vstup

TOML výstup

Běží lokálně · Bezpečné pro vkládání tajných údajů
TOML výstup se zobrazí zde…

Co je převod JSON na TOML?

Převod JSON na TOML transformuje data z formátu JavaScript Object Notation do formátu Tom's Obvious Minimal Language. JSON používá složené závorky, hranaté závorky a klíče v uvozovkách k reprezentaci strukturovaných dat. TOML používá plochý zápis klíč-hodnota s hlavičkami sekcí (tzv. tabulkami), který připomíná INI soubor, ale se striktním typováním. TOML byl navržen specificky pro konfigurační soubory, kde je důležitější čitelnost pro člověka než výměna dat mezi systémy.

TOML se stal výchozím konfiguračním formátem pro Rust (Cargo.toml), Python balíčky (pyproject.toml), statické weby Hugo, nastavení nasazení Netlify a mnoho CLI nástrojů. Pokud vaše zdrojová data existují jako JSON — z API odpovědi, exportované konfigurace nebo vygenerovaného souboru — a váš cílový systém očekává TOML, potřebujete převodník, který mapuje JSON objekty na TOML tabulky, JSON pole na TOML pole a přesně zachovává každý datový typ.

Převod JSON na TOML online je nejrychlejší způsob, jak vygenerovat platný TOML z existujících JSON dat. Převod zpracovává mapování typů automaticky: JSON řetězce se stávají TOML řetězci, JSON čísla se stávají TOML celými čísly nebo desetinnými čísly, JSON logické hodnoty se mapují přímo a JSON objekty se stávají TOML tabulkami. Jedinou výjimkou je null — TOML nemá typ null, takže hodnoty null jsou buď vynechány, nebo převedeny na prázdné řetězce v závislosti na převodníku.

Proč použít tento převodník JSON na TOML?

TOML je formát, který konfigurační soubory vyžadují; JSON je to, co produkují API a nástroje. Tento převodník překlenuje mezeru, abyste mohli přesouvat data mezi oběma formáty bez ručního přepisování.

Okamžitý převod
Vložte JSON a ihned získejte TOML výstup. Převod probíhá během psaní bez odesílání na server nebo nahrávání souborů.
🔒
Zpracování s důrazem na soukromí
Veškerý převod probíhá lokálně ve vašem prohlížeči. Konfigurační tajemství, API klíče a přihlašovací údaje k databázi ve vašem JSON nikdy neopustí vaše zařízení.
🔀
Podpora celé struktury
Vnořené objekty se stávají TOML tabulkami, pole objektů se stávají poli tabulek ([[tabulka]]) a pole se smíšenými typy jsou zpracována správně.
📋
Bez účtu
Otevřete stránku a převádějte. Bez registrace, bez rozšíření k instalaci, bez CLI závislosti. Funguje na jakémkoli zařízení s moderním prohlížečem.

Případy použití JSON na TOML

Konfigurace projektů v Rustu
Cargo.toml definuje závislosti, funkce a nastavení sestavení pro projekty v Rustu. Převeďte JSON seznamy závislostí nebo vygenerované konfigurace přímo do formátu Cargo.toml.
Python balíčky (pyproject.toml)
PEP 518 a PEP 621 standardizovaly pyproject.toml jako soubor metadat Python projektů. Převeďte stávající JSON metadata balíčků do požadované TOML struktury.
Konfigurace statických webů
Hugo, Netlify a další generátory statických webů používají konfigurační soubory TOML. Při migraci z nastavení ve formátu JSON nebo při programovém generování konfigurace převeďte výstup do TOML.
DevOps a infrastruktura
Nástroje jako Terraform (pro určité poskytovatele), Consul a různá kontejnerová prostředí přijímají konfiguraci ve formátu TOML. Převeďte nastavení exportovaná z JSON do TOML bez ručního přepisování hodnot.
API odpověď do konfiguračního souboru
REST API vrací JSON. Pokud potřebujete tato data použít jako TOML konfiguraci — například příznaky funkcí nebo nastavení prostředí — vložte odpověď a získejte platný TOML.
Výuka syntaxe TOML
Studenti a vývojáři, kteří TOML teprve poznávají, mohou vložit známé JSON struktury a vidět ekvivalentní TOML výstup.

Srovnání JSON a TOML

JSON a TOML se překrývají ve schopnostech, ale liší se syntaxí, podporou typů a zamýšleným použitím. Tato tabulka ukazuje rozdíly, které ovlivňují převod.

VlastnostJSONTOML
SyntaxBraces, brackets, colons, commasKey = value, [table], [[array]]
CommentsNot allowed (RFC 8259)Supported with #
Data typesstring, number, boolean, null, object, arraystring, integer, float, boolean, datetime, array, table
null supportNative (null)No null type — omit the key or use empty string
Nested objectsUnlimited nesting depthDotted keys or [table.subtable] headers
Arrays of objectsArray of objects with [][[array-of-tables]] syntax
ReadabilityModerate — bracket-heavy at depthHigh — flat key-value pairs
SpecRFC 8259 / ECMA-404TOML v1.0.0 (toml.io)

Záludnosti při převodu na TOML

TOML má pravidla, která se od JSON liší způsoby ovlivňujícími výstup převodu. Tyto čtyři problémy způsobují nejvíce nejasností.

Žádný typ null v TOML
JSON podporuje null jako hodnotu první třídy. TOML nemá typ null vůbec. Při převodu musí být hodnoty null ošetřeny — buď úplným vynecháním klíče, použitím prázdného řetězce, nebo volbou náhradní hodnoty. To znamená, že při zpětném převodu z TOML do JSON nemusí být původní hodnoty null obnoveny.
Heterogenní pole jsou omezena
JSON pole mohou volně míchat typy: [1, "dva", true]. TOML v1.0.0 vyžaduje, aby všechny prvky pole byly stejného typu. Pokud váš JSON obsahuje pole se smíšenými typy, převodník musí buď všechny prvky převést na řetězce, nebo hlásit chybu. Zkontrolujte výstup, pokud zdrojová pole obsahují smíšené typy.
Hluboce vnořené objekty jsou rozsáhlejší
JSON přirozeně zvládá hluboké vnoření pomocí vnořených závorek. TOML používá tečkové klíče nebo řetězené hlavičky [tabulka.podtabulka.klíč], které mohou být pro hluboce vnořené struktury velmi dlouhé. Výstup je platný, ale méně kompaktní než původní JSON.
Omezení názvů klíčů
Holé klíče TOML mohou obsahovat pouze ASCII písmena, číslice, pomlčky a podtržítka. JSON klíče mohou být libovolný řetězec. Pokud váš JSON obsahuje klíče s mezerami, tečkami nebo speciálními znaky, musí být tyto klíče v TOML výstupu uzavřeny do uvozovek. Většina převodníků to zpracuje automaticky, ale ověřte výstup, pokud vaše klíče obsahují neobvyklé znaky.

Příklady kódu

Programový převod JSON na TOML vyžaduje ve většině jazyků knihovnu pro serializaci TOML. Standardní knihovny parsují JSON; pro výstup TOML je potřeba specializovaný balíček.

JavaScript (Node.js)
import { stringify } from '@iarna/toml'

const json = '{"title":"My App","database":{"host":"localhost","port":5432}}'
const obj = JSON.parse(json)
const toml = stringify(obj)
console.log(toml)
// → title = "My App"
// →
// → [database]
// → host = "localhost"
// → port = 5432
Python
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

Časté dotazy

Je převod JSON na TOML bezztrátový?
Pro většinu dat ano. Řetězce, celá čísla, desetinná čísla, logické hodnoty, objekty a pole mají přímé TOML ekvivalenty. Dvě výjimky jsou null (TOML nemá typ null, takže hodnoty null jsou vynechány nebo nahrazeny) a pole se smíšenými typy (TOML vyžaduje jednotné typy prvků pole). Pokud váš JSON tyto dva vzory nepoužívá, je převod plně bezztrátový.
Co se stane s hodnotami JSON null v TOML?
TOML nemá typ null. Převodníky typicky vynechávají klíče s hodnotami null z výstupu, protože v TOML neexistuje způsob, jak vyjádřit „klíč existuje, ale nemá hodnotu“. Některé převodníky umožňují místo toho použít prázdný řetězec. Zkontrolujte výstup, pokud hodnoty null mají ve vašich datech smysl.
Může TOML reprezentovat vnořené JSON objekty?
Ano. JSON objekty se stávají TOML tabulkami. Vnořený objekt jako {"databaze": {"host": "localhost"}} se převede na hlavičku tabulky [databaze] s host = "localhost" pod ní. Libovolná hloubka vnoření je podporována prostřednictvím tečkových klíčů nebo vnořených hlaviček tabulek.
Proč Rust a Python používají TOML místo JSON?
TOML podporuje komentáře, které jsou nezbytné pro dokumentaci konfiguračních voleb. Také produkuje čistší výstup pro nastavení ve formátu klíč-hodnota, která tvoří většinu metadat balíčků. JSON zakazuje komentáře (RFC 8259), což ztěžuje jeho použití jako formátu konfigurace upravovaného člověkem.
Jak TOML zpracovává data a časy?
TOML má nativní typy pro datum a čas: datum s časovým pásmem (2024-01-15T10:30:00Z), lokální datum a čas, lokální datum, lokální čas. JSON nemá typ pro datum — data jsou uložena jako řetězce. Při převodu JSON na TOML zůstávají řetězce vypadající jako datum řetězci, pokud převodník explicitně nedetekuje a nepřevede vzory ISO 8601.
Je bezpečné vkládat do tohoto nástroje tajemství a přihlašovací údaje?
Ano. Převod probíhá výhradně ve vašem prohlížeči pomocí JavaScriptu. Žádná data se nepřenáší na žádný server. Můžete to ověřit otevřením vývojářských nástrojů prohlížeče, přepnutím na záložku Síť a potvrzením, že při převodu nejsou odesílány žádné požadavky.
Jakou verzi TOML výstup dodržuje?
Výstup dodržuje TOML v1.0.0, která byla vydána v lednu 2021 a je aktuální stabilní specifikací. Tato verze vyžaduje jednotné typy pole, podporuje tečkové klíče a definuje formát data a času. Specifikace je udržována na toml.io.