Neste artigo
O que e TOML?
TOML (Tom's Obvious Minimal Language) e um formato de ficheiro de configuração desenhado para ser fácil 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 programação.
Ao contrario do YAML que depende de indentação e tem inumeras armadilhas, ou do JSON que não 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 configuração.
Como funciona a conversão TOML para JSON
A conversão 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 cabeçalhos [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 não 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 configuração preferido devido a sua clareza e rigor.
- Ecossistema Rust — Cargo.toml e o manifesto do pacote para cada projeto Rust, definindo dependências, configurações de build e metadados num formato editavel por humanos e analisavel por maquinas
- Empacotamento Python — pyproject.toml (PEP 518/621) tornou-se o padrão para configuração de projetos Python, substituindo setup.py e setup.cfg por um formato declarativo mais limpo
- Geradores de sites estaticos — Hugo usa config.toml para configuração do site, e muitas outras ferramentas (Deno, InfluxDB, Netlify) usam TOML para os seus ficheiros de configuração
Perguntas frequentes
Quais sao as diferenças entre TOML, YAML e JSON para configuração?
JSON e o mais simples mas não suporta comentarios e virgulas finais, tornando-o incomodo para ficheiros de configuração editados por humanos. YAML suporta comentarios e e visualmente limpo mas a sua sintaxe baseada em indentação leva a bugs subtis. TOML suporta comentarios, tem tipagem explicita e evita analise baseada em indentação.
Quais sao as limitações do TOML?
O TOML pode tornar-se verboso para estruturas profundamente aninhadas ja que cada nivel de aninhamento requer o seu próprio cabeçalho [tabela.subtabela]. Também não 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 conversão para JSON, sao serializados como strings ISO 8601 ja que JSON não tem tipo de data nativo.