Conversor de TOML para JSON
Cole TOML e obtenha JSON no navegador, na hora. Pronto para Cargo.toml, pyproject.toml e config.toml. Datas e tabelas aninhadas corretas. 100% privado.
Opções · 2 espaços
O que é TOML e porquê converter para JSON?
TOML (Tom's Obvious, Minimal Language) é um formato de ficheiro de configuração criado por Tom Preston-Werner para ser inequívoco, fácil de ler por humanos e trivialmente mapeável para uma tabela de hash. Tornou-se o formato de configuração predefinido para o ecossistema Rust (Cargo.toml), o packaging moderno do Python (pyproject.toml, padronizado nos PEP 518 e PEP 621) e ferramentas como o Hugo, Netlify, Poetry e Foundry. O JSON, por contraste, é o formato universal de intercâmbio entre máquinas — todas as linguagens o analisam, todas as APIs o falam. Converter TOML para JSON é, por isso, uma tarefa comum: escreve-se a configuração em TOML legível e depois converte-se para JSON para alimentar um programa, inspecioná-la com ferramentas de JSON ou compará-la num pipeline.
Esta ferramenta tem vários diferenciadores que importam para a correção:
**1. Fidelidade de data-hora.** O TOML tem tipos de data e hora de primeira classe — offset date-time, local date-time, data local e hora local — que faltam por completo ao JSON. Conversores ingénuos achatam-nos todos em timestamps ISO, por isso uma data local como 1979-05-27 torna-se 1979-05-27T00:00:00Z, inventando silenciosamente uma hora e um fuso horário. Esta ferramenta preserva o tipo exato do TOML: as datas locais permanecem datas de calendário, as horas locais permanecem horas e apenas as offset date-times carregam um fuso horário. Isso mantém os seus dados honestos e os ida-e-volta sem perdas.
**2. Suporte completo de TOML 1.0.0.** Tabelas aninhadas, chaves pontilhadas, tabelas inline e arrays de tabelas ([[section]]) são todos analisados corretamente de acordo com a especificação TOML 1.0.0 usando a biblioteca smol-toml sem dependências. Ficheiros Cargo.toml e pyproject.toml reais com tabelas mistas inline e padrão convertem-se exatamente como a especificação exige.
**3. Tratamento honesto de inteiros grandes.** Os inteiros do TOML são de 64 bits, mas o JavaScript do navegador só consegue guardar inteiros até 2^53 - 1 com exatidão. Em vez de corromper silenciosamente um valor grande ou de falhar, esta ferramenta converte para o número JSON mais próximo e avisa-o, para que possa optar por guardar o valor como string. Esta honestidade sobre uma limitação fundamental do navegador é algo que a maioria dos conversores ignora.
**4. Privacidade 100% no navegador.** O seu TOML — que pode conter tokens de registo, fontes de pacotes internas ou segredos de deployment — nunca sai do seu navegador. Sem carregamento, sem servidor, sem registo. Pode confirmá-lo no separador Rede do seu navegador.
Precisa do inverso? Use o Conversor de JSON para TOML. A converter entre outros formatos de configuração? Experimente o Conversor de JSON para YAML e o Conversor de YAML para JSON, ou valide e formate primeiro a sua saída JSON com o Formatador JSON. TOML, JSON e YAML têm, cada um, o seu lugar: TOML para configuração de aplicações editada por humanos, JSON para intercâmbio entre máquinas e YAML para manifestos de infraestrutura profundamente aninhados. Este conversor permite-lhe passar entre os dois primeiros sem uma única linha de código.
// Convert TOML to JSON in Node.js using the smol-toml library
import { parse } from 'smol-toml';
const toml = `
[package]
name = "my-app"
version = "1.0.0"
[dependencies]
serde = { version = "1.0", features = ["derive"] }
`;
const data = parse(toml);
const json = JSON.stringify(data, null, 2);
console.log(json);
// {
// "package": { "name": "my-app", "version": "1.0.0" },
// "dependencies": {
// "serde": { "version": "1.0", "features": ["derive"] }
// }
// } Funcionalidades principais
Conversão ao vivo
A saída JSON atualiza-se instantaneamente à medida que escreve ou cola TOML — sem necessidade de botão Converter. Entradas grandes (>200KB) mudam automaticamente para o modo manual para manter o navegador responsivo.
Fidelidade de data-hora
As offset date-times, local date-times, datas locais e horas locais do TOML são convertidas em strings JSON que preservam o tipo original — sem timestamps de meia-noite fabricados, para que os ida-e-volta permaneçam sem perdas.
Suporte completo de TOML 1.0.0
Tabelas aninhadas, chaves pontilhadas, tabelas inline e arrays de tabelas ([[section]]) são todos analisados corretamente através do motor smol-toml sem dependências, cumprindo a especificação TOML 1.0.0.
Pronto para Cargo.toml e pyproject.toml
Otimizado para os ficheiros TOML reais mais comuns — manifestos Rust e configurações de packaging Python — incluindo tabelas inline e arrays de tabelas. Carregue um exemplo para ver a estrutura JSON exata.
Avisos honestos de inteiros grandes
Os inteiros além do intervalo seguro do JavaScript (2^53) não podem ser representados com exatidão em JSON — a ferramenta converte-os para o número mais próximo e avisa-o, em vez de corromper silenciosamente o valor.
Privacidade 100% no navegador
Toda a análise corre localmente no seu navegador. O seu TOML — incluindo tokens de registo, fontes de pacotes privadas e segredos de deployment — nunca é carregado, armazenado ou registado.
Exemplos
Cargo.toml (Rust)
[package]
name = "my-app"
version = "1.0.0"
edition = "2021"
authors = ["Jane Doe <jane@example.com>"]
[dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
[dev-dependencies]
criterion = "0.5"
[[bin]]
name = "my-app"
path = "src/main.rs" Converta um manifesto Cargo.toml do Rust em JSON — útil para ferramentas, painéis de dependências ou para alimentar metadados do cargo em scripts que esperam JSON.
pyproject.toml (Python)
[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "my-package" version = "0.3.1" requires-python = ">=3.10" dependencies = [ "requests>=2.31", "pydantic>=2.0" ] [project.optional-dependencies] dev = ["pytest>=8.0", "ruff>=0.4"] [tool.ruff] line-length = 100
Converta um pyproject.toml no formato PEP 621 em JSON para inspecionar programaticamente os metadados do projeto, as dependências e a configuração das ferramentas.
netlify.toml
[build] command = "npm run build" publish = "dist" [build.environment] NODE_VERSION = "20" [[redirects]] from = "/old-path" to = "/new-path" status = 301 force = true [[headers]] for = "/*" [headers.values] X-Frame-Options = "DENY"
Converta uma configuração de build do Netlify em JSON para auditar redirecionamentos e cabeçalhos ou gerar a configuração equivalente para outra plataforma.
config.toml do Hugo
baseURL = "https://example.org" languageCode = "en-us" title = "My Hugo Site" theme = "ananke" [params] description = "A static site built with Hugo" mainSections = ["posts", "docs"] [[menu.main]] name = "Blog" url = "/posts/" weight = 1 [[menu.main]] name = "About" url = "/about/" weight = 2
Converta o config.toml de um site Hugo em JSON para migrar definições, comparar configurações ou alimentar uma interface de configuração.
rustfmt.toml
edition = "2021" max_width = 100 hard_tabs = false tab_spaces = 4 newline_style = "Unix" use_small_heuristics = "Default" reorder_imports = true reorder_modules = true
Converta um rustfmt.toml plano em JSON — um bom exemplo de como pares chave-valor de nível superior (sem tabelas) mapeiam diretamente para um objeto JSON.
Config de app com datas e arrays de tabelas
title = "Deployment Log" last_deployed = 1979-05-27T07:32:00Z release_date = 1979-05-27 maintenance_window = 02:00:00 [[servers]] name = "alpha" ip = "10.0.0.1" ports = [8001, 8002] [[servers]] name = "beta" ip = "10.0.0.2" ports = [9001]
Mostra como as datas-horas nativas do TOML (offset date-time, data local, hora local) e os arrays de tabelas se convertem de forma limpa em strings e arrays JSON.
Como usar
- 1
Cole o seu TOML
Introduza ou cole o seu TOML no campo de entrada acima. Também pode clicar em 'Carregar exemplo' para experimentar um Cargo.toml, pyproject.toml ou config de deployment reais.
- 2
Veja a saída JSON ao vivo
O JSON aparece instantaneamente no painel de saída. Ajuste a opção de Indentação (2 ou 4 espaços) para corresponder ao seu formato de destino. Datas, tabelas e arrays de tabelas são tratados automaticamente.
- 3
Copie ou Baixe
Clique em Copiar para levar o JSON para a área de transferência, ou em Baixar para o guardar como ficheiro .json pronto para o seu programa, API ou ferramentas.
Armadilhas comuns do TOML
Valores de string sem aspas
Em TOML, os valores de string têm de estar entre aspas. Uma palavra solta à direita de um sinal de igual só é válida para booleanos (true/false), números, datas ou como parte de um array. Coloque as suas strings entre aspas duplas ou simples.
name = my-app
name = "my-app"
Chaves duplicadas
O TOML proíbe definir a mesma chave duas vezes dentro da mesma tabela e proíbe redefinir uma tabela que já tenha sido definida. Este é um erro comum ao juntar fragmentos de configuração. Cada chave e tabela têm de ser únicas.
name = "a" name = "b"
name = "a" alt_name = "b"
Formato de data-hora inválido
As datas-horas do TOML seguem o RFC 3339. Uma data precisa de um ano completo de 4 dígitos, mês de 2 dígitos e dia de 2 dígitos; uma data-hora precisa de um separador T (ou espaço). Datas malformadas falham na análise.
released = 2026-7-2
released = 2026-07-02
Parêntese de fecho em falta
Arrays, tabelas inline e cabeçalhos de tabela têm de ser fechados. Um [ ou { não fechado produz um erro de análise a apontar para a linha e coluna onde o problema foi detetado.
ports = [8001, 8002
ports = [8001, 8002]
Inteiro além do intervalo seguro
Os inteiros do TOML são de 64 bits, mas os números JSON no navegador estão limitados a 2^53 - 1. Os valores além disso são arredondados durante a conversão e é apresentado um aviso. Guarde inteiros muito grandes como strings entre aspas para os manter exatos.
snowflake = 1420070400000000000
snowflake = "1420070400000000000"
Redefinir uma tabela
Uma vez definida uma tabela como [servers], não a pode voltar a abrir com o mesmo cabeçalho. Para ter várias entradas, use antes um array de tabelas ([[servers]]), que se torna um array JSON de objetos.
[servers] name = "a" [servers] name = "b"
[[servers]] name = "a" [[servers]] name = "b"
Casos de uso comuns
- Metadados do Cargo do Rust
- Converta o Cargo.toml em JSON para construir painéis de dependências, auditar versões e features de crates ou alimentar dados do manifesto em scripts e CI que esperam JSON em vez de TOML.
- Configuração de projeto Python
- Converta o pyproject.toml em JSON para inspecionar os metadados de projeto PEP 621, extrair listas de dependências ou alimentar ferramentas que leem a configuração de packaging programaticamente.
- Inspeção de config de deployment
- Converta netlify.toml, foundry.toml ou outras configurações de plataforma em JSON para auditar redirecionamentos, cabeçalhos e definições de build, ou para gerar configuração equivalente para outra plataforma.
- Migração de formato de configuração
- Converta a configuração de aplicação em TOML para JSON ao migrar para um sistema que prefere JSON, ou como passo intermédio antes de transformar mais com ferramentas de JSON como o jq.
- Definições de site estático
- Converta o config.toml do Hugo em JSON para migrar as definições do site, comparar a configuração entre ambientes ou construir uma interface de definições apoiada em JSON.
- Entrada de API e scripts
- Transforme TOML escrito por humanos em JSON que uma API REST, uma função serverless ou um script de automação possa consumir diretamente, fazendo a ponte entre configuração legível e entrada de máquina.
Detalhes técnicos
- Análise de TOML 1.0.0 via smol-toml
- O TOML é analisado com a biblioteca smol-toml, um parser sem dependências e totalmente compatível com TOML 1.0.0. Trata corretamente tabelas aninhadas, chaves pontilhadas, tabelas inline, arrays de tabelas, strings multilinha e todos os quatro tipos de data-hora, e reporta erros de análise com posições de linha e coluna.
- Data-hora sem perdas e tratamento seguro de inteiros
- As datas-horas do TOML são serializadas para strings JSON que preservam o seu tipo exato (offset date-time, local date-time, data local, hora local). Os inteiros além do intervalo seguro do JavaScript (2^53 - 1) são promovidos a BigInt durante a análise e depois convertidos para o número JSON mais próximo com um aviso de precisão, para que TOML válido nunca falhe na conversão.
- 100% no navegador — Sem carregamento, sem servidor
- Todo o processamento acontece no motor JavaScript do seu navegador. Nenhum dado é transmitido em momento algum. As entradas maiores que 200KB mudam do modo ao vivo para o manual (um clique explícito em Converter) para manter a interface responsiva.
Boas práticas
- Guarde inteiros muito grandes como strings
- Se o seu TOML tiver inteiros além de 2^53 - 1 (Snowflake IDs, timestamps em nanossegundos, contadores grandes), coloque-os entre aspas como strings antes de converter. Os números JSON no navegador não os conseguem guardar com exatidão, e a ferramenta avisá-lo-á quando tiver de arredondar.
- Prefira indentação de 2 espaços para a saída JSON
- A indentação de dois espaços é a convenção mais usada para JSON e produz uma saída limpa e legível que funciona bem com a maioria dos formatadores e ferramentas de comparação. Reserve a indentação de 4 espaços para quando um guia de estilo o exigir.
- Valide a saída JSON antes de a usar
- Depois de converter, se planeia editar o JSON à mão ou alimentá-lo num sítio exigente, passe-o pelo nosso Formatador JSON para confirmar que é válido e está formatado de forma consistente.
- Mantenha os comentários do TOML em separado
- O JSON não tem sintaxe de comentários, por isso os comentários # do TOML são descartados na conversão. Se os comentários forem documentação importante, mantenha o TOML original no controlo de versões junto do JSON gerado.
- Use arrays de tabelas para secções repetidas
- Quando tiver várias secções semelhantes (servidores, redirecionamentos, bins), escreva-as como arrays de tabelas ([[section]]) em vez de repetir [section]. Convertem-se num array JSON de objetos limpo em vez de causar um erro de tabela duplicada.
Perguntas frequentes
Como converto TOML para JSON online?
O que é TOML e porquê convertê-lo para JSON?
Como são representadas as datas e horas do TOML em JSON?
Esta ferramenta trata o Cargo.toml e o pyproject.toml?
Como são convertidas as tabelas e arrays de tabelas do TOML?
O que acontece aos inteiros muito grandes ao converter TOML para JSON?
Os meus dados TOML são enviados para algum servidor?
Posso converter JSON de volta para TOML?
Como converto TOML para JSON na linha de comandos?
Como converto TOML para JSON em Python, Rust ou Node.js?
O conversor preserva a ordem das chaves e o que acontece aos comentários?
Existe um limite de tamanho de ficheiro para a entrada TOML?
Ferramentas relacionadas
Ver todas as ferramentas →Decodificador e Codificador Base64
Codificação e Formatação
Decodifique e codifique Base64 online gratuitamente. Conversão em tempo real com suporte completo a UTF-8 e emoji. 100% privado — executa no seu navegador. Sem necessidade de cadastro.
Conversor de Base64 para Imagem
Codificação e Formatação
Decodifique uma string Base64 ou data URI de volta para imagem no navegador. Pré-visualize, leia dimensões e MIME, e baixe como PNG, JPG, GIF, SVG. Sem upload.
Conversor CSV para JSON
Codificação e Formatação
Converta CSV para JSON no navegador. RFC 4180, inferência de tipos, cabeçalho, seguro para inteiros grandes. 100% privado, sem upload.
Conversor de .env para JSON
Codificação e Formatação
Cole um arquivo .env e obtenha JSON na hora. Suas senhas, chaves de API e tokens nunca saem do navegador — 100% privado, sem upload, analisador dotenv grátis.
Decodificador de Entidades HTML — Unescape HTML
Codificação e Formatação
Decodifique entidades HTML e faça unescape de HTML online — grátis, sem cadastro, 100% no seu navegador. Converte referências nomeadas, decimais & hex de volta em caracteres; nada é enviado.
Codificador de Entidades HTML — Escapar HTML
Codificação e Formatação
Codifique entidades HTML e escape caracteres especiais (< > & " ') online — grátis, sem cadastro, 100% no seu navegador. Saída nomeada, decimal ou hex; nada é enviado.