TOML-konfigurasjon (.toml)
TOML StandardTom's Obvious Minimal Language (TOML) er et entydig, menneskesentrert konfigurasjonsformat skapt av GitHub-medgrunnlegger Tom Preston-Werner, og er bredt tatt i bruk på tvers av moderne programmeringsøkosystemer, inkludert Rust (Cargo) og Python (pyproject.toml).
Konverter TOML til JSON
Gratis TOML til JSON-konverterer i nettleseren. Konverter filer umiddelbart på enheten din.
Undersøk og metadata
Operativsystemer og filanalysatorer identifiserer TOML-filer ved å undersøke den innledende binære bytesekvensen:
Byte-nivå hodesignatur (Magic Bytes)
Operativsystemer og filanalysatorer identifiserer TOML-filer ved å undersøke den innledende binære bytesekvensen:
HEX-SIGNATUR (OFFSET 0):
5B ... 5DASCII-REPRESENTASJON: [...]
Standardisering: TOML v1.0.0 Specification
Tekniske spesifikasjoner
| Beholderarkitektur | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Komprimering | Uncompressed text stream |
| Bytterekkefølge | UTF-8 text stream |
| Fargerom | N/A (Configuration File) |
| Kanaler og struktur | Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes |
| Maks. dimensjoner | Unbounded text length |
| Gjennomsiktighet | None |
| Strømming og progressiv | Sequential line-by-line configuration parsing |
Teknisk sammenligningsmatrise: TOML vs konkurrenter
| Teknisk attributt | TOML (Gjeldende) | YAML | JSON | INI |
|---|---|---|---|---|
| Ambisuitetsrisiko | Null (streng entydig spesifikasjon) | Høy (YAMLs «Norge-problem» med boolske feil) | Null (strenge datatyper) | Moderat (ingen formell standard) |
| Innebygde dato-/tidstyper | Innebygd støtte for RFC 3339 dato og klokkeslett | Implisitt streng-/datotolking | Ingen (kun strenger) | Ingen (kun strenger) |
| Støtte for kommentarer | Innebygd (#-kommentarer) | Innebygd (#-kommentarer) | Ingen kommentarer tillatt | Innebygd (; og #-kommentarer) |
| Primærøkosystem | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD-rørledninger | Web-API-er, nettleserkommunikasjon | Eldre Windows, Git-konfigurasjon |
Vanlige korrupsjonsmoduser og heksadesimal gjenopprettingsveiledning
Parserfeil: 'Duplicate key in table' eller 'Invalid table header'.
Underliggende årsak: Forsøk på å omdefinere en eksisterende nøkkel eller tabellnavneområde i dokumentet.
Utbedring: Valider og formater TOML-syntaksen på nytt ved hjelp av File2File TOML-formatereren.
Sikkerhetsanalyse og parser-angrepsvektorer
TOML-parsere må beskytte mot prototypeforurensning og CPU-utmattelse fra patologisk nestede tabell-arrayer.
Kjente angrepsvektorer
- Prototypeforurensning i JavaScript TOML-parsere som injiserer egenskaper i Object.prototype.
- Angrep mot tjenestetilgjengelighet gjennom dypt nestede tabell-array-deklarasjoner.
- Ubegrenset minneallokering under parsing av massive innebygde arrayer.
Beste praksis for forsvar:
Historisk opprinnelse og milepæler
Viktige fordeler
- Helt entydig: maper rent og forutsigbart til en nøkkel-verdi-tabell uten overraskende typekonvertering.
- Førsteklasses innfødt støtte for dato og klokkeslett (RFC 3339-tidsstempler, datoer, klokkeslett) uten strengundersøking.
- Tatt i bruk som det offisielle standardkonfigurasjonsformatet for moderne verktøy i programmeringsspråk (Rust Cargo.toml, Python pyproject.toml).
Tekniske begrensninger og ulemper
- Dypere nestede objekttrær med flere nivåer kan bli ordrike sammenlignet med YAML.
- Syntaks for tabell-arrayer ([[table.array]]) kan være lite intuitiv for nybegynnere.
- Mindre kompakt enn JSON for API-datautveksling mellom maskiner med høyt volum.
Interessante tekniske fakta
- TOML ble skapt av Tom Preston-Werner, som også var med på å grunnlegge GitHub samt skape Gravatar og SemVer (Semantisk versjonering).
- «Cargo.toml»-filen i alle Rust-prosjekter spesifikserer alle pakkeavhengigheter og kompilatorflagg i TOML-format.
- I motsetning til JSON støtter TOML kommentarer (ved hjelp av tegnet '#') og flersidige strenger naturlig.
Ofte stilte tekniske spørsmål
Hva brukes TOML til?
TOML brukes til programvarekonfigurasjon, mest nevneverdig i Rusts Cargo.toml, Pythons pyproject.toml, Go Hugo-konfigurasjoner og beholderverktøy.
Hvorfor foretrekkes TOML fremfor YAML for konfigurasjon?
TOML unngår YAMLs beryktede feil ved tolking av særtilfeller (som at uquerete 'NO' blir til den boolske verdien false), samtidig som det forblir menneskevennlig med kommentarer og tydelige tabeller.
Hvordan kan jeg konvertere TOML til JSON eller YAML?
Du kan konvertere TOML-filer til JSON eller YAML umiddelbart ved hjelp av File2File.app direkte i nettleseren din.
Relaterte konverteringspar for TOML
Konvertering av TOML-konfigurasjonsfiler til JSON-format oversetter menneskevennlige egenskapinnstillinger til et strengt dataobjekt som webapplikasjoner kan analysere umiddelbart.
Konvertering av JSON-konfigurasjonsfiler til TOML-format forenkler manuell redigering samtidig som all strukturert nøkkel-verdi-datahierarki bevares.