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øg & 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 | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Komprimering | Uncompressed text stream |
| Bytterejsning | UTF-8 text stream |
| Farverum | N/A (Configuration File) |
| Kanaler og struktur | Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes |
| Maks. dimensioner | Unbounded text length |
| Gennemsigtighed | None |
| Streaming og progressiv | Sequential line-by-line configuration parsing |
Tekniske sammenligningsmatrix: TOML vs. konkurrenter
| Teknisk attribut | TOML (Aktuel) | YAML | JSON | INI |
|---|---|---|---|---|
| Ambiguitetsrisiko | Nul (strengt entydig specifikation) | Høj (YAML 'Norge-problem' boolske fejl) | Nul (strenge datatyper) | Moderat (ingen officiel standard) |
| Indfødte datovelger | Indfødt RFC 3339 dato- og tidsunderstøttelse | Implicit streng- / datofortolkning | 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 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:
Historisk oprindelse og milepæle
Vigtige fordele og styrker
- Fuldstændig entydigt: mapper rent og forudsigeligt til en hashtabel uden overraskende typekonvertering.
- Førsteklasses indfødt understøttelse af dato og tid (RFC 3339-tidsstempler, datoer, klokkeslæt) uden strengundslippelse (escaping).
- 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 ordrette og uoverskuelige sammenlignet med YAML.
- Syntaksen for tabellarraer ([[table.array]]) kan være mindre intuitiv for begyndere.
- Mindre kompakt end JSON til maskine-til-maskine-API-dataudveksling med høj gennemstrømning.
Interessant teknisk trivia
- TOML blev skabt af Tom Preston-Werner, som også var med til at stifte GitHub samt skabte Gravatar og SemVer (Semantic Versioning).
- Filen 'Cargo.toml' i ethvert Rust-projekt specificerer alle pakkebegrænsninger og kompilatorflag i TOML-format.
- I modsætning til JSON understøtter TOML indfødte kommentarer (ved hjælp af tegnet '#') og flersprogede strenge (multiline strings).
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 ukoteret '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 TOML konverteringspar
Konvertering af TOML-konfigurationsfiler til JSON-format oversætter menneskevennlige 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.