TOML para JSON

O Cargo.toml do Rust, o pyproject.toml do Python, o config.toml do Hugo: TOML está por toda parte na configuração moderna, mas muitas ferramentas ainda falam apenas JSON. Cole seu TOML aqui e receba JSON formatado de volta: as seções [tabela] viram objetos aninhados, os blocos [[array de tabelas]] viram arrays de objetos, e as datas passam intactas como strings. O parser cobre o núcleo cotidiano do TOML; seus limites reais (valores de várias linhas, tabelas inline, chaves com ponto) estão listados abertamente logo abaixo.

Como a conversão funciona

  1. 1

    Cole seu TOML

    Coloque o texto na caixa de entrada e clique em Converter para JSON. Comentários # de linha inteira são ignorados automaticamente.

  2. 2

    Tabelas viram objetos

    Um cabeçalho `[server.database]` vira objetos JSON aninhados, um nível para cada nome separado por ponto.

  3. 3

    Arrays de tabelas viram arrays

    Blocos `[[users]]` montam um array JSON com um objeto por bloco.

  4. 4

    Valores escalares mantêm o tipo

    Strings entre aspas, inteiros e decimais em notação simples e true/false viram tipos JSON nativos; datas continuam strings, exatamente como foram escritas.

  5. 5

    Copie o JSON

    O resultado sai formatado com indentação de 4 espaços, com as chaves na ordem original, pronto para copiar.

Como os tipos são mapeados

Valor TOML Valor JSON Exemplo
String (básica ou literal) String "hello" → "hello"
Inteiro (decimal simples) Número 42 → 42
Float (decimal simples) Número 3.14 → 3.14
Booleano Booleano true → true
Array (uma linha) Array [1, 2, 3] → [1, 2, 3]
Tabela com chaves Objeto [server] + port = 8080 → "server": {"port": 8080}
Array de tabelas Array de objetos [[users]] + name = "alice" → "users": [{"name": "alice"}]
Data e hora String, como escrita 2026-04-18T10:00:00Z → "2026-04-18T10:00:00Z"

A saída é sempre formatada com indentação de 4 espaços, então arrays e objetos ocupam várias linhas; a tabela acima mostra os valores em linha para facilitar a leitura. A ordem das chaves é preservada exatamente como aparece no seu TOML.

Exemplo completo

title = "My App"

[server]
host = "localhost"
port = 8080

[[users]]
name = "alice"
admin = true

converte para:

{
    "title": "My App",
    "server": {
        "host": "localhost",
        "port": 8080
    },
    "users": [
        {
            "name": "alice",
            "admin": true
        }
    ]
}

TOML aceito e os limites reais

Aceito: cabeçalhos [tabela] incluindo nomes de seção com ponto, [[arrays de tabelas]], pares chave = valor em uma linha, strings básicas "..." com os escapes \n, \t e \", strings literais '...', inteiros e decimais em notação simples, true/false, arrays de uma linha (aninhamento permitido), comentários # de linha inteira e datas repassadas como strings.

Não aceito, e o que fazer no lugar:

  • Strings de várias linhas (""" ou ''') e arrays de várias linhas param o parser com um erro. Antes, coloque o valor em uma única linha.
  • Tabelas inline não são expandidas: point = { x = 1, y = 2 } sai como a string "{ x = 1, y = 2 }", não como objeto. Reescreva como uma seção [point] própria. As linhas de dependências do Cargo.toml, como serde = { version = "1.0" }, são o caso clássico.
  • Chaves com ponto à esquerda do sinal de igual ficam como uma chave plana: server.host = "a" produz a chave "server.host", sem aninhar. Use um cabeçalho [server] no lugar. Já os [nomes.de.secao] com ponto nos cabeçalhos aninham corretamente.
  • Comentários na mesma linha não são removidos: port = 8080 # main vira a string "8080 # main". Mantenha comentários em linhas próprias.
  • Formatos numéricos além do decimal simples não são reconhecidos: 1_000, 0xFF, 5e2, +99, inf e nan saem como strings entre aspas. Escreva 1000, 255, 500, 99.
  • Escapes \uXXXX em strings básicas não são decodificados. Cole o caractere real no lugar.

Para um documento TOML 1.0 completo, use um conversor de linha de comando como o toml2json, ou carregue o arquivo com o tomllib do Python e gere o JSON de lá.

Onde isso é útil

  • Inspeção rápida de um trecho TOML como JSON durante a depuração.
  • Passar valores de configuração simples para linters, scripts ou ferramentas de inventário que só aceitam JSON.
  • Gerar fixtures JSON de teste a partir de anotações TOML mais fáceis de escrever à mão.
  • Migrar arquivos de configuração pequenos e planos, como são muitos config.toml do Hugo.

Notas sobre ida e volta

  • Comentários nunca sobrevivem: JSON não tem sintaxe de comentário.
  • Datas continuam strings; o código seguinte precisa convertê-las de volta em objetos de data.
  • Números grandes: os inteiros ficam como valores de 64 bits no texto JSON, mas consumidores JavaScript perdem precisão acima de 2^53. Atenção com timestamps em nanossegundos e IDs numéricos.
  • A ordem das chaves é mantida como escrita por este conversor; outras ferramentas JSON podem reordenar as chaves ao reemitir o documento.

Direção inversa

JSON → TOML é a viagem difícil, porque JSON tem estruturas (aninhamento anônimo profundo, null) que o TOML não tem ou trata de outro jeito. A maioria dos cenários de ida e volta exige ajustes manuais do lado TOML.

Perguntas frequentes

Não. JSON não tem sintaxe de comentário, então comentários # de linha inteira são simplesmente ignorados. Um alerta: um comentário depois de um valor não é removido, então port = 8080 # main vira a string “8080 # main”. Deixe os comentários em linhas próprias antes de converter.

Não. Ele cobre o núcleo do dia a dia: tabelas com nomes de seção com ponto, arrays de tabelas, pares chave = valor em uma linha, strings entre aspas, números decimais simples, booleanos, arrays de uma linha e comentários de linha inteira. Strings e arrays de várias linhas, tabelas inline, chaves com ponto e formatos numéricos como 1_000 ou 0xFF não são aceitos. Para documentos com a especificação completa, use uma ferramenta de linha de comando como o toml2json ou o tomllib do Python.

Arquivos de configuração típicos convertem na hora. A conversão roda no nosso servidor, então documentos enormes ficam limitados pelo tamanho da requisição; para TOML de vários megabytes, um conversor de linha de comando é a melhor opção.

Sim, este conversor roda no servidor: o TOML viaja até o nosso servidor por HTTPS, é convertido lá e volta na mesma resposta. O conteúdo não fica armazenado depois; só é registrado um contador de uso anônimo. Evite colar segredos como senhas ou chaves de API.

Ferramentas relacionadas

Ferramenta disponível em outros idiomas