Neste artigo
O que e TOML?
TOML (Tom's Obvious Minimal Language) e um formato de ficheiro de configuracao desenhado para ser facil de ler e escrever. Criado por Tom Preston-Werner (co-fundador do GitHub) em 2013, o TOML mapeia-se de forma inequivoca para uma tabela hash, tornando-o simples de analisar em estruturas de dados em qualquer linguagem de programacao.
Ao contrario do YAML que depende de indentacao e tem inumeras armadilhas, ou do JSON que nao suporta comentarios e virgulas finais, o TOML oferece um meio-termo: tipagem explicita (strings, inteiros, floats, booleanos, datas), sintaxe de tabela clara com [parenteses retos] e suporte para tabelas inline e arrays — tudo sem a ambiguidade que afeta outros formatos de configuracao.
Como funciona a conversao TOML para JSON
A conversao entre TOML e JSON envolve analisar o formato fonte numa estrutura de dados intermedia e serializa-la no formato alvo. Cada tipo TOML mapeia diretamente para um equivalente JSON.
- Pares chave-valor — a sintaxe chave = valor do TOML mapeia para propriedades de objetos JSON; chaves pontilhadas como server.port tornam-se objetos aninhados
- Tabelas e arrays — os cabecalhos [tabela] TOML tornam-se objetos JSON, e os [[array-de-tabelas]] tornam-se arrays de objetos JSON, preservando a estrutura hierarquica
- Sistema de tipos — os tipos nativos TOML (string, inteiro, float, booleano, datetime) mapeiam para primitivos JSON; os valores datetime sao serializados como strings ISO 8601 ja que JSON nao tem tipo de data
Experimente gratuitamente — sem cadastro
Converter TOML para JSON →Onde o TOML e usado
O TOML foi adotado por varios ecossistemas importantes como formato de configuracao preferido devido a sua clareza e rigor.
- Ecossistema Rust — Cargo.toml e o manifesto do pacote para cada projeto Rust, definindo dependencias, configuracoes de build e metadados num formato editavel por humanos e analisavel por maquinas
- Empacotamento Python — pyproject.toml (PEP 518/621) tornou-se o padrao para configuracao de projetos Python, substituindo setup.py e setup.cfg por um formato declarativo mais limpo
- Geradores de sites estaticos — Hugo usa config.toml para configuracao do site, e muitas outras ferramentas (Deno, InfluxDB, Netlify) usam TOML para os seus ficheiros de configuracao
Perguntas frequentes
Quais sao as diferencas entre TOML, YAML e JSON para configuracao?
JSON e o mais simples mas nao suporta comentarios e virgulas finais, tornando-o incomodo para ficheiros de configuracao editados por humanos. YAML suporta comentarios e e visualmente limpo mas a sua sintaxe baseada em indentacao leva a bugs subtis. TOML suporta comentarios, tem tipagem explicita e evita analise baseada em indentacao.
Quais sao as limitacoes do TOML?
O TOML pode tornar-se verboso para estruturas profundamente aninhadas ja que cada nivel de aninhamento requer o seu proprio cabecalho [tabela.subtabela]. Tambem nao tem tipo null (ao contrario de JSON e YAML), o que significa que valores ausentes devem ser tratados omitindo completamente a chave.
Como o TOML lida com datas e horas?
O TOML tem suporte nativo para tipos de data e hora segundo RFC 3339: datetime com offset (2024-01-15T10:30:00Z), datetime local (2024-01-15T10:30:00), data local (2024-01-15) e hora local (10:30:00). Na conversao para JSON, sao serializados como strings ISO 8601 ja que JSON nao tem tipo de data nativo.