JSON para TOML
Conversor online gratuito de JSON para TOML, transforma automaticamente objetos JSON em arquivos de configuração compatíveis com a especificação TOML v1.0, suporta tabelas aninhadas ([section]), sub-tabelas ([a.b]) e arrays de tabelas ([[items]]), gerando diretamente Cargo.toml/pyproject.toml. Todo o processamento é feito localmente.
Sugestões Relacionadas
O que é TOML? Por que converter JSON para TOML?
TOML significa Tom's Obvious, Minimal Language (A Linguagem Óbvia e Mínima de Tom), um formato de arquivo de configuração criado por Tom Preston-Werner, co-fundador do GitHub, em 2013. Seus objetivos de design são: sintaxe óbvia (obvious), mínima (minimal), fácil de ler para humanos e inequívoca. O TOML 1.0 tornou-se uma versão estável em 2021 (toml-lang/toml) e hoje é o formato de configuração padrão em muitas ferramentas, como Cargo do ecossistema Rust, PEP 621 do Python (pyproject.toml), Hugo, Prettier, Deno, Taplo e outras.
TOML tem várias vantagens claras sobre JSON e YAML em cenários de arquivo de configuração: ① sem as armadilhas de indentação do YAML — YAML usa indentação para representar hierarquia, e erros de indentação podem mudar completamente o significado da configuração (por exemplo, uma lista virar uma string), enquanto TOML declara a hierarquia explicitamente com [table], sem ambiguidade; ② mais adequado para configuração que JSON — aspas e chaves do JSON ficam muito verbosas em configurações complexas, enquanto a sintaxe key = value do TOML é mais limpa, com suporte nativo a comentários; ③ sistema de tipos claro — TOML distingue sete tipos: integer/float/string/boolean/datetime/array/table, sem a ambiguidade do JSON sobre "o número é inteiro ou flutuante", e sem o problema Norway do YAML 1.1 (NO interpretado como booleano false).
A estrutura central do TOML é composta por quatro elementos: ① pares chave-valor (key = value) para itens de configuração básicos; ② tabelas (Table) declaradas com [name] para agrupamentos nomeados, com suporte a aninhamento ([a.b.c]); ③ arrays de tabelas (Array of Tables) declarados com [[name]] para listas de objetos homogêneos, comuns em configurações multi-ambiente, listas de plugins e listas de dependências; ④ arrays (Array) com suporte a tipos primitivos inline ([1, 2, 3]) e em múltiplas linhas. Esta ferramenta identifica inteligentemente a estrutura JSON durante a conversão e escolhe automaticamente a sintaxe TOML mais adequada.
As motivações comuns para converter JSON em TOML incluem: ① migração de projetos do ecossistema Node.js para os novos ecossistemas Rust/Python, com necessidade de padronizar o formato de configuração para TOML; ② equipes decidindo unificar configurações JSON dispersas em TOML, aproveitando a hierarquia [section] do TOML para evitar o fardo de leitura de aninhamento profundo do JSON; ③ substituir YAML por TOML para eliminar bugs estranhos causados por indentação; ④ em CI/CD, converter metadados JSON recebidos de upstream em TOML para injetar em ferramentas downstream. Esta ferramenta cobre todos esses cenários de conversão.
O processo de conversão é essencialmente um mapeamento de árvore sintática: JSON.parse() analisa o texto em um objeto JavaScript (AST), e depois percorre recursivamente cada nó — strings, números, booleanos e null são mapeados para os escalares TOML correspondentes; arrays são divididos em inline ou array de tabelas conforme o tipo dos elementos; objetos aninhados são mapeados em tabelas ou sub-tabelas. Por fim, o texto é gerado conforme a especificação TOML. Esse mapeamento estruturado garante que o resultado da conversão seja 100% sintaticamente válido, sem erros de formato.
Casos de uso
- Preparar Cargo.toml para projetos Rust: converta configurações JSON no estilo package.json / tsconfig.json para o formato TOML compatível com a toolchain do Cargo
- Gerar pyproject.toml para projetos Python: converta metadados JSON no estilo setup.py / setup.cfg para o formato pyproject.toml padrão PEP 621
- Configurações para Hugo / Deno / Prettier: migre configurações de ferramentas JSON para o formato TOML e aproveite a estrutura de tabelas mais clara do TOML
- Migração de toolchain DevOps: padronize o formato ao migrar configurações de pipeline CI/CD de JSON para TOML, reduzindo custos de manutenção para a equipe
- Avaliação de formato de configuração: converta rapidamente configurações JSON existentes para TOML para comparar formatos e escolher a linguagem de configuração mais adequada
- Aprender a sintaxe TOML: tenha uma estrutura JSON em mãos e queira ver intuitivamente como o TOML representa tabelas aninhadas e arrays de tabelas
Como Usar
- Cole o conteúdo JSON no editor à esquerda, ou clique no botão de upload para selecionar um arquivo .json / .txt, ou clique em "Exemplo" para carregar um exemplo aninhado completo
- A ferramenta analisa o JSON em tempo real e gera o código de configuração TOML à direita seguindo a especificação TOML v1.0, com pares chave-valor, tabelas aninhadas e arrays de tabelas usando a sintaxe apropriada automaticamente
- Se houver erro de sintaxe no JSON, um aviso vermelho será exibido. Clique para ir à ferramenta de reparo de JSON e corrigir automaticamente erros comuns como vírgulas no final
- Quando o resultado estiver satisfatório, clique em "Copiar" para copiar o conteúdo TOML, ou clique em "Baixar" para salvar como arquivo config.toml para uso no projeto
Recursos
- Saída padrão TOML v1.0: os arquivos de configuração gerados podem ser usados diretamente em qualquer ferramenta compatível com TOML, como Cargo, Poetry, Hugo, Prettier e outras
- Mapeamento automático de objetos aninhados: JSON com múltiplos níveis de aninhamento é convertido automaticamente em tabelas TOML ([a]) e sub-tabelas ([a.b.c]), com hierarquia clara e legível
- Reconhecimento inteligente de arrays de tabelas: arrays de objetos (como listas de conexões de banco de dados) são convertidos automaticamente em arrays de tabelas TOML ([[items]]), seguindo a especificação oficial
- Escape seguro de strings: aspas duplas, barras invertidas, quebras de linha, tabulações e outros caracteres especiais são automaticamente escapados conforme as regras do TOML, evitando falhas de análise por caracteres inválidos
- Mapeamento automático de tipos: strings/números/booleanos/null do JSON correspondem automaticamente a string/integer/float/boolean do TOML, e null é convertido para string vazia
- Edição bidirecional em tempo real: cole JSON à esquerda e veja o resultado TOML instantaneamente à direita, sem precisar clicar em botões
- Dados de exemplo para teste rápido: carregue com um clique um exemplo completo com objetos aninhados + arrays + arrays de tabelas para ver o efeito da geração TOML
- Upload e download de arquivos: suporta upload de arquivos .json/.txt para leitura do conteúdo e download do resultado como arquivo config.toml
- Painéis arrastáveis e histórico: painéis esquerdo e direito podem ser redimensionados arrastando no PC, com salvamento automático das últimas 200 entradas no histórico para consulta
- Ir para formatação JSON: após a conversão, vá com um clique para a ferramenta de formatação JSON para embelezar, validar ou compactar o JSON original
- Processamento 100% local no front-end: toda a análise e conversão é feita em JavaScript no navegador, dados sensíveis como chaves e strings de conexão não são enviados
Perguntas frequentes
Como converter JSON em um arquivo de configuração TOML?
Cole o conteúdo JSON no campo de entrada à esquerda, a ferramenta analisará automaticamente o objeto JSON e o converterá para o formato de arquivo de configuração seguindo a especificação TOML v1.0. Pares chave-valor viram key = value, objetos aninhados viram tabelas TOML ([section]) e sub-tabelas ([a.b]), arrays são divididos automaticamente entre arrays inline ou arrays de tabelas ([[items]]) conforme o conteúdo. Clique no botão de exemplo para carregar um exemplo aninhado e ver o efeito, e o resultado pode ser baixado diretamente como arquivo config.toml para uso no projeto.
Quais são os cenários ideais para TOML, YAML e JSON?
JSON é ideal para troca de dados em APIs e transmissão de dados front-end/back-end, sendo o padrão de fato para interfaces REST; YAML é ideal para estruturas de dados complexas e configurações de CI/CD (GitHub Actions, Ansible, Kubernetes), com alta legibilidade e suporte a comentários e múltiplos documentos; TOML é ideal para cenários claros de arquivo de configuração (Rust/Cargo, Python pyproject, Hugo, Prettier), com sintaxe simples, poucas ambiguidades e sem armadilhas de indentação. Não há superioridade absoluta entre os três, o importante é adequar ao cenário — para arquivos de configuração recomenda-se TOML, para CI/CD recomenda-se YAML, e para dados de API use JSON.
Como objetos JSON aninhados são representados em TOML?
TOML usa tabelas (Table) para representar estruturas aninhadas. Um nível de aninhamento como {"database": {"host": "localhost"}} vira [database] host = "localhost"; múltiplos níveis como {"server": {"ssl": {"enabled": true}}} vira [server.ssl] enabled = true. Esta ferramenta identifica automaticamente o nível de aninhamento e gera o caminho de cabeçalho de tabela correspondente, sem necessidade de ajustes manuais.
Como arrays JSON são convertidos em TOML?
TOML distingue duas sintaxes de array: ① arrays de tipos primitivos (como ["a", "b", 1, 2]) viram arrays inline key = ["a", "b", 1, 2], entre colchetes e separados por vírgula; ② arrays de objetos (como [{"name": "primary"}, {"name": "replica"}]) viram arrays de tabelas [[items]], com cada objeto precedido por um cabeçalho [[items]] e os campos dispostos abaixo. Esta ferramenta identifica automaticamente o tipo de array e escolhe a sintaxe TOML mais adequada.
O TOML gerado pode ser usado diretamente como Cargo.toml?
Sim. A ferramenta segue rigorosamente a especificação oficial TOML v1.0 (github.com/toml-lang/toml), e o TOML gerado pode ser usado diretamente em Cargo (gerenciador de pacotes Rust), Poetry/pyproject (gerenciador de pacotes Python), Hugo (sites estáticos), Prettier, Deno, Taplo e qualquer outra ferramenta que suporte o formato TOML. Atenção: se você precisar das seções específicas [package] / [dependencies] do Cargo.toml, complete os campos correspondentes conforme a especificação do Cargo (name, version, edition, tabelas de dependências de crates, etc.).
Para que o valor null em JSON é convertido?
TOML não possui tipo null, então o null em JSON é convertido para uma string vazia "" (a representação equivalente mais comum). Se o consumidor do seu TOML tiver requisitos especiais para campos null (como o campo optional de um crate em [dependencies]), ajuste manualmente a linha correspondente após a conversão.
Como aspas duplas e quebras de linha em strings são tratadas?
Strings em TOML devem estar entre aspas duplas, e aspas duplas, barras invertidas, quebras de linha (\n), retornos de carro (\r), tabulações (\t) dentro delas precisam ser escapados conforme as regras do TOML. Esta ferramenta lida automaticamente com esses escapes, por exemplo He said "Hello" em JSON vira He said \"Hello\" no TOML, e quebras de linha em strings multilinha viram \n. Não é necessário escape manual, a saída pode ser lida corretamente por qualquer parser TOML.
O TOML gerado tem suporte a tipos de data/hora?
Esta ferramenta aceita apenas texto JSON como entrada, e o padrão JSON não possui tipo nativo de data/hora (a prática comum é usar strings ISO 8601, como "2026-01-01T00:00:00Z"). O TOML convertido manterá esses valores como strings (key = "2026-01-01T00:00:00Z"). Se você precisar dos tipos nativos local datetime/offset datetime do TOML, altere manualmente as strings para literais de data TOML puros (como 2026-01-01T00:00:00).
A conversão no navegador local envia os dados de configuração?
Não. Toda a análise de JSON, geração de TOML e escape de strings é feita localmente no motor JavaScript do seu navegador, sem envio pela rede para qualquer servidor, e funciona mesmo offline. JSONs com informações sensíveis como senhas de banco, chaves de API e endereços internos podem ser convertidos com segurança.
Solução de Problemas
JSON reporta erro "Unexpected token", como resolver?
Isso é um erro de sintaxe JSON. Causas comuns: ① vírgula extra no final (trailing comma), como {"a":1,}; ② aspas simples para envolver strings, como {'a':1} (JSON requer aspas duplas); ③ nome de chave sem aspas duplas, como {a:1}; ④ comentários // ou /* */ (o padrão JSON não suporta). Você pode usar a ferramenta de reparo de JSON deste site para corrigir esses erros comuns automaticamente e depois colar o resultado aqui para converter.
O TOML convertido reporta "invalid TOML" no Cargo?
Geralmente é um conflito de nomes de campos ou campos obrigatórios ausentes. O parser TOML é muito rigoroso quanto a caminhos de cabeçalho de tabela, chaves duplicadas e escape de caracteres. Verifique: ① se há chaves duplicadas no mesmo escopo; ② se caracteres especiais dentro de strings estão corretamente escapados (aspas duplas, barras invertidas, quebras de linha); ③ se o nível de aninhamento é muito profundo (TOML 1.0 recomenda não mais que 5 níveis); ④ se faltam seções obrigatórias do Cargo como [package]. A sintaxe desta ferramenta é 100% válida, o problema geralmente está no consumidor (como se os nomes de campos seguem a especificação do Cargo).
Array de objetos foi convertido em array inline em vez de array de tabelas?
Um array JSON só é convertido em array inline ["a","b"] quando todos os elementos são tipos primitivos (string/número/booleano/null). Arrays de objetos (como [{"name":"x"}]) são convertidos em arrays de tabelas [[items]]. Se seu array de objetos foi identificado incorretamente como array inline, significa que há elementos não-objeto misturados. Verifique os dados: ① se há strings ou números misturados no array; ② se a hierarquia de aninhamento foi quebrada.
Alguns nomes de chaves ficaram com aspas após a conversão, como remover?
TOML规定 que nomes de chaves só podem conter letras, números, sublinhados e hífens ([A-Za-z0-9_-]). Se o nome da chave JSON contiver caracteres especiais (como espaços, pontos, chinês, emoji, palavras reservadas), a ferramenta automaticamente colocará entre aspas duplas para garantir a validade do TOML, por exemplo {"my key": 1} vira "my key" = 1. Se sua ferramenta downstream não aceita chaves com aspas, altere manualmente os nomes das chaves JSON para caracteres válidos (A-Z a-z 0-9 _ -) antes de converter.
Conversão de arquivos grandes deixa o navegador lento, o que fazer?
A ferramenta tem otimização de conversão em tempo real (converte ao digitar), mas arquivos muito grandes (>1MB, centenas de milhares de linhas) ainda podem causar pressão. Sugestões: ① use primeiro a ferramenta de formatação JSON para verificar se o JSON é válido; ② converta em lotes (por exemplo, divida por chaves de nível superior); ③ confirme que o navegador tem memória suficiente; ④ arquivos de configuração muito grandes (10MB+) recomenda-se usar ferramentas de linha de comando como taplo, tomlq — esta ferramenta é voltada para cenários diários de configuração (KB a algumas centenas de KB).
Glossário
- TOML
- Tom's Obvious, Minimal Language, uma linguagem de formato projetada para arquivos de configuração, com sintaxe simples e sem ambiguidade, é o formato padrão de configuração em Rust Cargo, Python pyproject e Hugo.
- Table (Tabela)
- Agrupamento nomeado declarado com [name] em TOML, equivalente a um objeto em JSON, suporta aninhamento com pontos como [server.ssl].
- Array of Tables (Array de Tabelas)
- Lista de objetos homogêneos declarada com [[name]] em TOML, cada bloco [[name]] contém todos os campos de um objeto, equivalente a um array de objetos em JSON.
- Inline Table (Tabela Inline)
- Sintaxe suportada no TOML 1.0, usa { key = value, key = value } para declarar objetos simples em uma única linha, ideal para objetos planos sem necessidade de nome.
- Cargo.toml
- Arquivo de configuração padrão de projetos Rust, define metadados do package, dependencies, dev-dependencies, features, etc., no formato TOML.
- pyproject.toml
- Arquivo de configuração padrão de projetos Python (PEP 621), define build-system, metadados do project, dependencies, configurações de tool (black/pytest/mypy, etc.).
- TOML v1.0
- TOML 1.0 é a versão estável lançada oficialmente em 2021, esta ferramenta segue rigorosamente esta especificação (github.com/toml-lang/toml/blob/main/toml.md).
- Objeto aninhado JSON
- Objeto que contém outros objetos em JSON, corresponde a Table ([section]) ou sub-tabela ([a.b.c]) em TOML.
- Escape TOML
- Aspas duplas, barras invertidas, quebras de linha e outros caracteres especiais dentro de strings TOML devem ser escapados com barra invertida (\", \\, \n). Esta ferramenta lida com isso automaticamente.
- Arquivo de Configuração
- Arquivo de configurações lido pelo aplicativo na inicialização, separado do código para facilitar modificações. TOML é um dos padrões de fato para arquivos de configuração.
Tabela de mapeamento de tipos JSON para TOML
Esta ferramenta converte tipos JSON em tipos TOML seguindo as regras abaixo:
| Tipo JSON | Tipo TOML | Sintaxe TOML | Observação |
|---|---|---|---|
| string | string | key = "value" | Strings TOML devem estar entre aspas duplas |
| integer | integer | key = 8080 | Inteiros não têm ponto decimal |
| float | float | key = 3.14 | Floats devem ter ponto decimal |
| boolean | boolean | key = true | TOML usa apenas true / false em minúsculas |
| null | string (vazia) | key = "" | TOML não tem tipo null, convertido para string vazia |
| array[primitive] | array | key = ["a", "b"] | Arrays de tipos primitivos usam colchetes inline |
| array[object] | array of tables | [[items]]\nkey = value | Arrays de objetos usam [[name]] array de tabelas |
| object | table | [name]\nkey = value | Objetos usam declaração de tabela [name] |
Tabela de escape de strings TOML
Caracteres especiais que devem ser escapados dentro de strings TOML:
| Caractere original | Escapado em TOML | Nome | Cenário de exemplo |
|---|---|---|---|
" | \" | Aspas duplas | Aspas duplas aninhadas em strings |
\ | \\ | Barra invertida | Caminho Windows C:\Users |
Quebra de linha | \n | Newline | Compressão de strings multilinha |
Tabulação | \t | Tab | Campos com tabulação |
Retorno de carro | \r | Carriage Return | Quebra de linha CRLF do Windows |
\b | \b | Backspace | Caractere backspace |
\f | \f | Form Feed | Caractere de alimentação de formulário |
U+0000 | \u0000 | Unicode 0 | Caracteres de controle devem usar escape \u |
Comparação de exemplos JSON para TOML
Saída TOML correspondente a entradas JSON com estruturas complexas:
| Estrutura | Exemplo |
|---|---|
| Entrada JSON | { "name": "app", "port": 8080 } |
| Saída TOML | name = "app"
port = 8080 |
| Entrada JSON | { "server": { "host": "0.0.0.0", "port": 443 } } |
| Saída TOML | [server]
host = "0.0.0.0"
port = 443 |
| Entrada JSON | { "hosts": [{"ip":"10.0.0.1"},{"ip":"10.0.0.2"}] } |
| Saída TOML | [[hosts]]
ip = "10.0.0.1"
[[hosts]]
ip = "10.0.0.2" |
Privacy & Security
Toda a análise de JSON, geração de TOML, escape de strings e leitura de arquivos desta ferramenta é executada localmente em JavaScript no navegador. O conteúdo do seu JSON e o TOML gerado não são enviados pela rede para nenhum servidor, nem são registrados ou analisados. JSONs com informações sensíveis como senhas de banco, chaves de API e endereços internos podem ser convertidos com segurança. O histórico local é salvo apenas no localStorage do seu próprio navegador e pode ser excluído ao fechar o navegador ou limpar o cache.
Authoritative References
- toml-langEspecificação oficial TOML v1.0
- GitHubRepositório TOML no GitHub
- WikipediaTOML - Wikipédia
- Rust OficialReferência de campos Cargo.toml
- Comprimir JSON
- CSV para JSON
- JSON para CSV
- JSON Diff
- JSON Escape / Unescape
- Achatamento de JSON
- Formatador JSON
- Gerador de JSON
- Consulta JSONPath
- Mesclar JSON
- Reparar JSON
- Validador JSON Schema
- Ordenar JSON
- JSON Stringify
- JSON para HTML
- JSON para Java
- JSON to Markdown
- JSON para SQL
- JSON para TOML
- JSON para TypeScript
- XML para JSON
- JSON para XML
- YAML para JSON
- JSON para YAML
- JSON para Python
- JSON para Go
- JSON para Rust
- JSON para Swift
- JSON para C#
- JSON para C++
- JSON para PHP