Skip to content

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.

Sem rastreamento Roda no navegador Grátis
Opções · 2 espaços
Indentação
0 caracteres
JSON Saída
0 linhas
Revisto para conformidade com a especificação TOML 1.0.0, fidelidade de data-hora e tratamento seguro de inteiros grandes — Equipa de Engenharia da Go Tools · Jul 2, 2026

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. 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. 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. 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.

✗ Incorreto
name = my-app
✓ Correto
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.

✗ Incorreto
name = "a"
name = "b"
✓ Correto
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.

✗ Incorreto
released = 2026-7-2
✓ Correto
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.

✗ Incorreto
ports = [8001, 8002
✓ Correto
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.

✗ Incorreto
snowflake = 1420070400000000000
✓ Correto
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.

✗ Incorreto
[servers]
name = "a"
[servers]
name = "b"
✓ Correto
[[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?
Cole o seu TOML no campo de entrada acima. A ferramenta analisa-o e produz JSON instantaneamente no navegador — sem necessidade de clicar num botão. Pode alternar a indentação do JSON entre 2 e 4 espaços no painel Opções. Assim que o JSON aparecer na área de saída, clique em Copiar para o levar para a área de transferência ou em Baixar para o guardar como ficheiro .json. Tudo corre localmente, por isso o seu TOML nunca sai do seu dispositivo.
O que é TOML e porquê convertê-lo para JSON?
TOML (Tom's Obvious, Minimal Language) é um formato de ficheiro de configuração concebido para ser fácil de ler e escrever por humanos, com semântica clara que mapeia sem ambiguidade para uma tabela de hash. Alimenta o Cargo.toml do Rust, o pyproject.toml do Python, o Hugo, o Netlify e muitas outras ferramentas. Converte-se TOML para JSON quando é preciso alimentar configuração num programa ou API que espera JSON, inspecionar um ficheiro de configuração programaticamente, comparar duas configurações com ferramentas de JSON ou alimentar uma interface. O TOML é escrito por humanos; o JSON é consumido por máquinas — este conversor faz a ponte entre os dois.
Como são representadas as datas e horas do TOML em JSON?
O JSON não tem tipo de data nativo, por isso as datas-horas do TOML são convertidas em strings. Esta ferramenta preserva o tipo exato de data do TOML: uma offset date-time como 1979-05-27T07:32:00Z torna-se "1979-05-27T07:32:00.000Z", uma data local como 1979-05-27 mantém-se "1979-05-27" (não é preenchida para um timestamp completo) e uma hora local como 07:32:00 torna-se "07:32:00.000". Muitos conversores achatam incorretamente as datas locais em timestamps de meia-noite UTC — este mantém o significado original para que os ida-e-volta sejam sem perdas.
Esta ferramenta trata o Cargo.toml e o pyproject.toml?
Sim. O Cargo.toml e o pyproject.toml são os dois ficheiros TOML reais mais comuns, e ambos são totalmente suportados, incluindo tabelas aninhadas ([dependencies], [tool.ruff]), tabelas inline (serde = { version = "1.0", features = ["derive"] }) e arrays de tabelas ([[bin]]). Carregue o exemplo Cargo.toml ou pyproject.toml acima para ver a estrutura JSON exata produzida. Isto é prático para painéis de build, auditorias de dependências ou qualquer script que leia metadados de projeto como JSON.
Como são convertidas as tabelas e arrays de tabelas do TOML?
Um cabeçalho de tabela TOML como [owner] torna-se um objeto JSON aninhado sob a chave "owner". Uma tabela pontilhada como [tool.ruff] torna-se objetos aninhados: { "tool": { "ruff": { ... } } }. Um array de tabelas escrito com parênteses retos duplos — [[servers]] repetido — torna-se um array JSON de objetos: { "servers": [ { ... }, { ... } ] }. As tabelas inline ({ a = 1, b = 2 }) tornam-se objetos JSON simples. A conversão segue exatamente a especificação TOML 1.0.0.
O que acontece aos inteiros muito grandes ao converter TOML para JSON?
O TOML suporta inteiros com sinal de 64 bits, mas o JavaScript (e, portanto, o JSON no navegador) só consegue representar inteiros com exatidão até 2^53 - 1 (9007199254740991). Se o seu TOML contiver um inteiro maior do que isso — por exemplo um Snowflake ID ou um timestamp em nanossegundos — não pode ser representado sem perdas como número JSON, e o valor é arredondado, com um aviso apresentado. Esta é uma limitação fundamental do JavaScript do navegador que afeta todos os conversores baseados no navegador. Para preservação exata, mantenha esses valores como strings entre aspas no seu TOML.
Os meus dados TOML são enviados para algum servidor?
Não. Toda a análise e conversão acontecem inteiramente no seu navegador usando JavaScript. O seu TOML nunca é carregado, nunca é armazenado e nunca é registado. Isto torna a ferramenta segura para ficheiros Cargo.toml com tokens de registo privados, pyproject.toml com índices de pacotes internos, configurações de deployment com segredos e qualquer outra configuração sensível. Pode verificá-lo abrindo o separador Rede do seu navegador — colar TOML desencadeia zero pedidos de rede.
Posso converter JSON de volta para TOML?
Sim. Use o Conversor de JSON para TOML companheiro para o sentido inverso, ou clique no botão Inverter direção no topo desta ferramenta para trocar a entrada e a saída no lugar. Note que o JSON para TOML tem algumas restrições que o TOML para JSON não tem — o nível superior tem de ser um objeto e os valores null não têm equivalente em TOML — que a ferramenta JSON para TOML explica e trata por si.
Como converto TOML para JSON na linha de comandos?
Uma opção popular é a CLI 'toml' baseada em Rust ou a ferramenta Go 'yj' (yj -tj lê TOML e escreve JSON). Com Python 3.11+ pode executar: python3 -c "import tomllib, json, sys; print(json.dumps(tomllib.load(sys.stdin.buffer)))" < config.toml. Com Node.js: npx smol-toml (ou um pequeno script usando a biblioteca smol-toml). Para algo rápido e pontual no navegador sem instalar nada, esta ferramenta é o caminho mais rápido.
Como converto TOML para JSON em Python, Rust ou Node.js?
Em Python 3.11+: import tomllib, json; data = tomllib.load(open('config.toml','rb')); json.dump(data, open('config.json','w')). Em Rust: use as crates toml e serde_json — let value: toml::Value = toml::from_str(&text)?; let json = serde_json::to_string_pretty(&value)?. Em Node.js: import { parse } from 'smol-toml'; const data = parse(text); const json = JSON.stringify(data, null, 2) — esta é a mesma biblioteca e abordagem usadas por esta ferramenta.
O conversor preserva a ordem das chaves e o que acontece aos comentários?
A ordem das chaves dentro de uma tabela é preservada: as chaves aparecem na saída JSON na mesma ordem em que aparecem no seu TOML. Os comentários, contudo, são descartados — o JSON não tem sintaxe de comentários, por isso os comentários # do TOML não podem sobreviver à conversão. Se precisa de manter a documentação, adicione-a como um campo compatível com JSON ou mantenha o TOML original junto do JSON gerado.
Existe um limite de tamanho de ficheiro para a entrada TOML?
Não há limite rígido, mas entradas acima de 200KB passam da conversão ao vivo para o modo manual: aparece um botão Converter e a conversão só corre quando clica nele, mantendo o navegador responsivo. Ficheiros de configuração típicos — mesmo grandes workspaces Cargo.toml ou configurações de deployment multiambiente — convertem-se em bem menos de 50 milissegundos.

Ferramentas relacionadas

Ver todas as ferramentas →