Converter JSON em TOML (e TOML em JSON)
Cole um pyproject.toml, um Cargo.toml ou qualquer JSON e veja a conversão na hora, nos dois sentidos. O arquivo não sai do seu computador.
Como usar
- Escolha JSON → TOML ou TOML → JSON.
- Cole o texto, abra um arquivo
.jsonou.toml, ou clique em Exemplo. - Copie o resultado ou baixe o arquivo convertido.
Em caso de erro de sintaxe, a mensagem traz linha e coluna e o botão Ir para a linha seleciona o ponto do problema.
O que é TOML
TOML (Tom’s Obvious, Minimal Language) é um formato de configuração criado por Tom Preston-Werner em 2013, com a versão 1.0.0 publicada em janeiro de 2021. A ideia é ser fácil de ler e mapear sem ambiguidade para uma tabela de chaves e valores. Ele é o formato do Cargo.toml (Rust), do pyproject.toml (Python, usado por pip, Poetry, uv e Ruff), do netlify.toml e de configurações do Hugo, entre outros.
A mesma estrutura nos dois formatos:
{
"package": { "name": "app", "version": "1.0.0" },
"bin": [{ "name": "app", "path": "src/main.rs" }]
}[package]
name = "app"
version = "1.0.0"
[[bin]]
name = "app"
path = "src/main.rs"[package] abre uma tabela (um objeto) e [[bin]] acrescenta um item a uma lista de tabelas (uma lista de objetos).
Diferenças que afetam a conversão
TOML não tem null
Não existe valor nulo em TOML; a forma de dizer “sem valor” é não escrever a chave. Por isso, um null no JSON gera um erro que aponta o caminho do valor (por exemplo, usuario.telefone). Marcando Omitir valores null, essas chaves ficam de fora. Em listas, o item nulo é removido e os seguintes mudam de posição — a ferramenta avisa quantos foram omitidos.
A raiz precisa ser uma tabela
Um documento TOML é sempre um conjunto de chaves e valores. Um JSON cuja raiz é uma lista ([1, 2, 3]) ou um valor solto não pode ser convertido diretamente: coloque-o dentro de uma chave, como {"itens": [1, 2, 3]}.
Datas e horas
TOML tem tipos próprios para data e hora, no padrão da RFC 3339, e JSON não tem. De TOML para JSON, cada data vira um texto:
| TOML | JSON |
|---|---|
1979-05-27T07:32:00-08:00 | "1979-05-27T07:32:00-08:00" |
1979-05-27T07:32:00 | "1979-05-27T07:32:00" |
1979-05-27 | "1979-05-27" |
07:32:00 | "07:32:00" |
A ferramenta avisa quando isso acontece. No sentido contrário, um texto com cara de data continua sendo texto: o conversor não adivinha tipos. Ou seja, TOML → JSON → TOML transforma datas em strings. Frações de segundo são mantidas até os milissegundos.
Inteiros de 64 bits
Os inteiros do TOML vão de −9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. Valores acima de 2^53 são convertidos dígito por dígito nos dois sentidos, sem arredondamento. Um inteiro do JSON maior que o limite de 64 bits gera erro. Escritas como 0xFF, 0o755, 0b1010 e 1_000 viram números decimais comuns no JSON, e inf e nan viram null, com aviso.
Ordem das chaves
Dentro de cada tabela, a ordem é preservada. Mas o TOML exige que os valores simples de uma tabela venham antes das subtabelas; por isso, no TOML gerado, chaves com objetos aparecem depois das chaves simples do mesmo nível. Os dados são os mesmos.
Textos com quebra de linha
De TOML para JSON, strings de várias linhas ("""...""") e literais ('...') são lidas corretamente. No TOML gerado, quebras de linha são escritas como \n dentro de aspas comuns — válido, embora menos bonito que o bloco com três aspas.
Erros comuns em TOML
- Texto sem aspas:
nome = Anaé inválido; o certo énome = "Ana". - Dois-pontos no lugar do igual:
porta: 8080é YAML; em TOML éporta = 8080. - Chave ou tabela repetida: definir
[banco]duas vezes é erro. - Barra invertida em caminhos do Windows: use aspas simples,
'C:\pasta'. - Booleano com maiúscula: só
trueefalsesão aceitos.
Chaves repetidas no JSON de entrada também são tratadas como erro, em vez de ficar com a última em silêncio.
Limitações
Comentários do TOML não passam para o JSON, que não tem comentários. Em tabelas com chaves formadas só por dígitos (1, 2, 10), a leitura do TOML coloca essas chaves primeiro, em ordem numérica; a ferramenta avisa quando isso ocorre. O analisador aceita a sintaxe da versão 1.1.0 da especificação (por exemplo, tabelas em linha com quebras de linha). A entrada vai até 2 milhões de caracteres.
Perguntas frequentes
Para que converter pyproject.toml em JSON? Para ler a configuração com ferramentas que só entendem JSON, como o jq, ou para inspecionar a estrutura real do arquivo: em JSON fica explícito o que é tabela e o que é lista.
Por que deu erro de null? Porque TOML não tem valor nulo. Marque Omitir valores null ou substitua o null na origem.
Listas com tipos misturados funcionam? Sim. Desde a versão 1.0, o TOML aceita listas com valores de tipos diferentes, como [1, "a", true].
O que significa [[nome]] com dois colchetes? É uma lista de tabelas: cada bloco [[nome]] acrescenta um objeto à lista nome.
Meus dados são enviados? Não. A conversão roda no navegador.