TOML-konfiguration (.toml)
TOML StandardTom's Obvious Minimal Language (TOML) er et entydigt, menneskecentreret konfigurationsformat skabt af GitHub-medstifteren Tom Preston-Werner, som er bredt vedtaget på tværs af moderne programmeringsøkosystemer, herunder Rust (Cargo) og Python (pyproject.toml).
Konverter TOML til JSON
Gratis TOML til JSON-konverter i browseren. Konverter filer med det samme på din enhed.
Undersøgelse og metadata
Operativsystemer og filanalysatorer identificerer TOML-filer ved at inspicere den indledende binære bytesekvens:
Byte-niveau Header-signatur (Magic Bytes)
Operativsystemer og filanalysatorer identificerer TOML-filer ved at inspicere den indledende binære bytesekvens:
HEX-SIGNATUR (OFFSET 0):
5B ... 5DASCII-REPRÆSENTATION: [...]
Standardisering: TOML v1.0.0 Specification
Tekniske specifikationer
| Containerarkitektur | Menneskeligt læsbar konfigurationsfil, der entydigt afbildes til en hashtabel, struktureret med [tables] og nøgle = værdi-par |
| Komprimering | Ukomprimeret tekststrøm |
| Byte-rækkefølge | UTF-8-tekststrøm |
| Farverum | Ikke relevant (konfigurationsfil) |
| Kanaler og struktur | Tabeller, arrays af tabeller, inline-tabeller, strenge, heltal, flydende kommatal, booleske værdier og RFC 3339-dato-/tidsværdier |
| Maks. dimensioner | Ubegrænset tekstlængde |
| Gennemsigtighed | Ingen |
| Streaming og progressiv | Sekventiel fortolkning af konfiguration linje for linje |
Teknisk sammenligningsmatrix: TOML sammenlignet med konkurrenterne
| Teknisk attribut | TOML (Aktuel) | YAML | JSON | INI |
|---|---|---|---|---|
| Ambiguitetsrisiko | Nul (strengt entydig specifikation) | Høj (YAML 'Norge-problem' boolske fejl) | Nul (strikte datatyper) | Moderat (ingen officiel standard) |
| Indbyggede dato- og tidstyper | Indbygget understøttelse af dato og klokkeslæt efter RFC 3339. | Implicit fortolkning af strenge og datoer | Ingen (kun strenge) | Ingen (kun strenge) |
| Kommentarunderstøttelse | Indfødt (# kommentarer) | Indfødt (# kommentarer) | Ingen kommentarer tilladt | Indfødt (; og # kommentarer) |
| Primært økosystem | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD-pipeliner | Web-API'er, browserkommunikation | Ældre Windows, Git-konfig |
Almindelige korruptionstilstande og hex-gendannelsesvejledning
Parserfejl: 'Duplicate key in table' eller 'Invalid table header'.
Grundlæggende årsag: Forsøg på at omdefinere en eksisterende nøgle eller tabelnavneområde i dokumentet.
Gendannelse: Valider og omformater TOML-syntaks ved hjælp af File2File.app TOML Formatter.
Sikkerhedsanalyse og parser-angrebsvektorer
TOML-parsere skal værne mod prototyppollution (prototype pollution) og CPU-udmattelse fra patologiske indlejringer af tabelarrayer.
Kendte angrebsvektorer
- Prototyppollution i JavaScript TOML-parsere, der injicerer egenskaber i Object.prototype.
- Angreb mod tilgængelighed (Denial of Service) via dybt indlejrede tabelarray-deklarationer.
- Ubegrænset allokering af hukommelse under fortolkning af massive indlejrede arrays (inline arrays).
Defensive bedste praksisser: Valider tabelindlejringsgrænser og brug prototypeforureningssikre ordbogsobjekter.
Historisk oprindelse og milepæle
Vigtige fordele og styrker
- Fuldstændig entydigt: dataene kan mappes klart og forudsigeligt til en hash-tabel uden overraskende typekonvertering.
- Indbygget understøttelse af dato og klokkeslæt (RFC 3339-tidsstempler, datoer og klokkeslæt) uden escaping af strenge.
- Vedtaget som det officielle standardkonfigurationsformat for moderne sprogværktøjer (Rust Cargo.toml, Python pyproject.toml).
Tekniske begrænsninger og ulemper
- Dybt indlejrede objekttræer i flere niveauer kan blive omfangsrige sammenlignet med YAML.
- Syntaksen for arrays af tabeller ([[table.array]]) kan virke ulogisk for begyndere.
- Mindre kompakt end JSON til maskine-til-maskine-API-dataudveksling med høj gennemstrømning.
Interessante tekniske fakta
- TOML blev skabt af Tom Preston-Werner, som også var med til at stifte GitHub samt skabte Gravatar og SemVer (Semantic Versioning).
- Cargo-pakker bruger Cargo.toml til metadata, afhængigheder og mål; Rust-projekter med andre byggesystemer kan bruge andre filer.
- I modsætning til JSON understøtter TOML indfødte kommentarer (ved hjælp af tegnet '#') og strenge over flere linjer.
Ofte stillede tekniske spørgsmål
Hvad bruges TOML til?
TOML bruges til softwarekonfiguration, mest bemærkelsesværdigt i Rusts Cargo.toml, Pythons pyproject.toml, Go Hugo-konfigurationer og containerværktøjer.
Hvorfor foretrækkes TOML frem for YAML til konfiguration?
TOML undgår YAMLs berygtede fejl i fortolkningen af specialtilfælde (såsom at et uden anførselstegn 'NO' omdannes til den booleske værdi false), samtidig med at det forbliver menneskevenligt med kommentarer og klare tabeller.
Hvordan kan jeg konvertere TOML til JSON eller YAML?
Du kan konvertere TOML-filer til JSON eller YAML med det samme ved hjælp af File2File.app direkte i din webbrowser.
Relaterede konverteringspar for TOML
Konvertering af TOML-konfigurationsfiler til JSON-format oversætter menneskevenlige egenskabsindstillinger til et strengt dataobjekt, som webapplikationer kan analysere øjeblikkeligt.
Konvertering af JSON-konfigurationsfiler til TOML-format forenkler manuel redigering, samtidig med at alle strukturerede nøgle-værdi-datahierarkier bevares.