Skip to content

Conversor de JSON para TOML

Cole JSON e obtenha TOML no navegador, na hora. Tratamento seguro de null, verificação de tabela raiz, saída pronta para Cargo.toml e pyproject.toml.

Sem rastreamento Roda no navegador Grátis
0 caracteres
TOML Saída
0 linhas
Revisto para conformidade com a especificação TOML 1.0.0, imposição de tabela de nível superior e tratamento transparente de null — Equipa de Engenharia da Go Tools · Jul 2, 2026

O que é TOML e porquê converter a partir de JSON?

TOML (Tom's Obvious, Minimal Language) é um formato de ficheiro de configuração construído para ser inequívoco e fácil de ler e editar por humanos. É o formato de configuração padrão para o ecossistema Rust (Cargo.toml), o packaging moderno do Python (pyproject.toml) e ferramentas como o Hugo, Netlify, Poetry e Foundry. O JSON é o formato universal de máquina que as ferramentas e APIs produzem. Converter JSON para TOML é comum quando se tem dados estruturados em JSON mas se precisa de uma configuração TOML editável por humanos como destino — gerar um Cargo.toml ou pyproject.toml, ou transformar as definições JSON de uma aplicação num ficheiro de configuração legível.

O TOML é mais estruturado que o JSON, e esta ferramenta transforma essa rigidez em orientação em vez de falhas crípticas:

**1. Imposição de tabela de nível superior.** Todo o documento TOML é uma tabela na raiz — um array ou escalar solto não é TOML válido. Em vez de emitir uma saída quebrada para uma entrada { array de nível superior }, esta ferramenta deteta-o e diz-lhe exatamente como envolver os seus dados sob uma chave, para que obtenha sempre TOML válido ou uma explicação clara.

**2. Tratamento de null seguro e transparente.** O JSON tem null; o TOML não. A maioria dos conversores ou falha ou descarta dados silenciosamente. Esta ferramenta é explícita: as chaves de objeto com valores null são descartadas e as chaves removidas são listadas num aviso, e um null dentro de um array — que não tem representação TOML válida — produz um erro preciso, apontando o caminho. Nunca é surpreendido por dados em falta.

**3. Saída TOML idiomática.** Os objetos aninhados tornam-se [tabelas], os objetos profundamente aninhados tornam-se tabelas pontilhadas ([tool.ruff]) e os arrays de objetos tornam-se arrays de tabelas ([[section]]) — a forma que os ficheiros Cargo.toml e pyproject.toml reais usam. A conversão é alimentada pela biblioteca smol-toml, sem dependências e compatível com TOML 1.0.0.

**4. Privacidade 100% no navegador.** O seu JSON — que pode conter credenciais, tokens ou detalhes de serviços internos — nunca sai do seu navegador. Sem carregamento, sem servidor, sem registo. Confirme-o no separador Rede do seu navegador.

Precisa do inverso? Use o Conversor de TOML para JSON. A trabalhar com outros formatos de configuração? Experimente o Conversor de JSON para YAML e o Conversor de YAML para JSON, ou limpe primeiro a sua entrada JSON com o Formatador JSON. Cada formato tem o seu nicho: JSON para intercâmbio entre máquinas, TOML para configuração de aplicações e ferramentas editada por humanos e YAML para manifestos de infraestrutura profundamente aninhados. Este conversor permite-lhe passar de JSON para TOML sem escrever qualquer código.

// Convert JSON to TOML in Node.js using the smol-toml library
import { stringify } from 'smol-toml';

const data = JSON.parse(`{
  "package": { "name": "my-app", "version": "1.0.0" },
  "dependencies": { "serde": { "version": "1.0" } }
}`);

// The top-level value must be an object; null values on objects are dropped.
const toml = stringify(data);

console.log(toml);
// [package]
// name = "my-app"
// version = "1.0.0"
//
// [dependencies.serde]
// version = "1.0"

Funcionalidades principais

Conversão ao vivo

A saída TOML atualiza-se instantaneamente à medida que escreve ou cola JSON — sem necessidade de botão Converter. Entradas grandes (>200KB) mudam automaticamente para o modo manual para manter o navegador responsivo.

Orientação de tabela de nível superior

Os documentos TOML têm de ser uma tabela na raiz. Se o nível superior do seu JSON for um array ou escalar, a ferramenta diz-lhe exatamente como o envolver sob uma chave — sem saída quebrada, sem adivinhações.

Tratamento seguro de null

O TOML não tem null. As chaves de objeto com valores null são descartadas e listadas num aviso; um null dentro de um array gera um erro preciso, apontando o caminho. Sabe sempre o que aconteceu aos seus dados.

Saída TOML idiomática

Os objetos aninhados tornam-se [tabelas], os objetos profundamente aninhados tornam-se tabelas pontilhadas ([tool.ruff]) e os arrays de objetos tornam-se arrays de tabelas ([[section]]) — a forma que os Cargo.toml e pyproject.toml reais usam.

Consciência de float e inteiro

O TOML separa inteiros de floats, por isso um float como 1.0 é escrito como o inteiro 1. A ferramenta avisa-o quando esta coerção muda o tipo de um valor, para que as surpresas de ida-e-volta fiquem visíveis.

Privacidade 100% no navegador

Toda a análise corre localmente no seu navegador. O seu JSON — incluindo credenciais, tokens e detalhes de serviços internos — nunca é carregado, armazenado ou registado.

Exemplos

Fonte Cargo.toml

{
  "package": {
    "name": "my-app",
    "version": "1.0.0",
    "edition": "2021"
  },
  "dependencies": {
    "serde": { "version": "1.0", "features": ["derive"] },
    "tokio": { "version": "1", "features": ["full"] }
  }
}

Gere um Cargo.toml do Rust a partir de JSON — os objetos aninhados tornam-se [tabelas] e os objetos inline tornam-se tabelas inline, exatamente como o Cargo espera.

Fonte pyproject.toml

{
  "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"]
  }
}

Gere um pyproject.toml no formato PEP 621 a partir de metadados de projeto em JSON — útil quando uma ferramenta ou API produz JSON que precisa em formato TOML.

Definições de app

{
  "title": "My Service",
  "debug": false,
  "port": 8080,
  "database": {
    "host": "localhost",
    "port": 5432,
    "pool_size": 10
  },
  "features": ["auth", "metrics", "tracing"]
}

Converta um objeto plano de definições de aplicação em TOML — os escalares de nível superior ficam no topo e o objeto database aninhado torna-se uma tabela [database].

Servidores (array de tabelas)

{
  "servers": [
    { "name": "alpha", "ip": "10.0.0.1", "ports": [8001, 8002] },
    { "name": "beta", "ip": "10.0.0.2", "ports": [9001] }
  ]
}

Um array de objetos torna-se um array de tabelas ([[servers]]) em TOML — a forma idiomática de exprimir secções repetidas.

Fonte de config Netlify

{
  "build": {
    "command": "npm run build",
    "publish": "dist",
    "environment": { "NODE_VERSION": "20" }
  },
  "redirects": [
    { "from": "/old", "to": "/new", "status": 301, "force": true }
  ]
}

Transforme uma config de deployment em JSON num netlify.toml, com tabelas aninhadas [build] e [build.environment] e um array de tabelas [[redirects]].

Config com estrutura pontilhada

{
  "tool": {
    "ruff": { "line-length": 100, "target-version": "py310" },
    "black": { "line-length": 100 }
  }
}

Objetos JSON profundamente aninhados tornam-se tabelas TOML pontilhadas como [tool.ruff] e [tool.black] — a forma que as ferramentas de pyproject.toml esperam.

Como usar

  1. 1

    Cole o seu JSON

    Introduza ou cole o seu JSON no campo de entrada acima. Também pode clicar em 'Carregar exemplo' para experimentar uma fonte Cargo.toml, uma fonte pyproject.toml ou um objeto de definições de app.

  2. 2

    Veja a saída TOML ao vivo

    O TOML aparece instantaneamente no painel de saída. Se o seu JSON tiver um array de nível superior ou valores null, a ferramenta explica exatamente o que fazer em vez de produzir uma saída quebrada.

  3. 3

    Copie ou Baixe

    Clique em Copiar para levar o TOML para a área de transferência, ou em Baixar para o guardar como ficheiro .toml pronto para o Cargo, Poetry, Hugo, Netlify ou qualquer ferramenta que leia TOML.

Armadilhas comuns de JSON para TOML

Array ou escalar de nível superior

Os documentos TOML têm de ser uma tabela (objeto) na raiz. Um array JSON ou um valor solto não podem ser um documento TOML. Envolva-o sob uma chave para o converter.

✗ Incorreto
[1, 2, 3]
✓ Correto
{ "items": [1, 2, 3] }

Valores null em objetos

O TOML não tem tipo null, por isso uma chave de objeto com valor null é descartada durante a conversão. A ferramenta avisa-o de que chaves foram removidas. Se precisa de manter a chave, dê-lhe um valor real ou uma string vazia.

✗ Incorreto
{ "name": "a", "nickname": null }
✓ Correto
{ "name": "a", "nickname": "" }

Null dentro de um array

Um array TOML não pode conter um null ou uma lacuna, por isso um JSON como [1, null, 3] não tem saída TOML válida. Remova o null ou substitua-o por um valor real antes de converter.

✗ Incorreto
{ "ports": [8001, null, 8003] }
✓ Correto
{ "ports": [8001, 8003] }

Sintaxe JSON inválida

A entrada tem de ser primeiro JSON válido. Vírgulas finais, aspas simples e chaves sem aspas são erros comuns copiados do JavaScript que não são JSON válido e têm de ser corrigidos antes de converter.

✗ Incorreto
{ 'name': 'a', 'active': true, }
✓ Correto
{ "name": "a", "active": true }

Float com fração zero torna-se inteiro

O TOML escreve um float cuja parte fracionária é zero (1.0) como o inteiro 1, mudando o seu tipo num ida-e-volta. A ferramenta avisa-o. Se o valor for conceptualmente um inteiro, tudo bem; se tiver de permanecer um float, o TOML não consegue preservá-lo para números inteiros.

✗ Incorreto
{ "ratio": 1.0 }  →  ratio = 1
✓ Correto
{ "ratio": 1.5 }  →  ratio = 1.5

Misturar objeto e array na mesma chave

Uma chave JSON tem de ser consistentemente um objeto ou um array para mapear para uma tabela ou array de tabelas. Formas inconsistentes ao longo de um conjunto de dados podem produzir TOML confuso — normalize a estrutura primeiro.

✗ Incorreto
{ "server": { "a": 1 }, "server": [1] }
✓ Correto
{ "server": { "a": 1 }, "servers": [1] }

Casos de uso comuns

Gerar Cargo.toml
Transforme JSON estruturado — de uma ferramenta de scaffolding, de uma API ou de um script — num Cargo.toml do Rust válido, com tabelas [dependencies] aninhadas e tabelas inline produzidas automaticamente.
Gerar pyproject.toml
Converta metadados de projeto em JSON num pyproject.toml no formato PEP 621, incluindo tabelas pontilhadas [tool.*], para que ferramentas que emitem JSON possam produzir configuração de packaging Python.
Config editável por humanos a partir de JSON
Transforme as definições JSON de uma aplicação num ficheiro de configuração TOML legível que os humanos possam editar confortavelmente, com comentários adicionados depois à mão.
Geração de config de deployment
Produza netlify.toml, foundry.toml ou configurações de plataforma semelhantes a partir de JSON, transformando objetos aninhados e arrays de objetos nas tabelas e arrays de tabelas que essas ferramentas esperam.
Migração de formato de configuração
Mova configuração de um sistema baseado em JSON para um baseado em TOML, usando este conversor como ponte e os avisos de null e de nível superior para apanhar tudo o que não mapear.
Prototipagem de estrutura TOML
Esboce uma configuração como JSON — um formato que a maioria dos programadores digita com fluência — e depois converta para TOML para ver o layout idiomático de tabelas e arrays de tabelas antes de a colocar num repositório.

Detalhes técnicos

Análise de JSON RFC 8259
A entrada JSON é analisada com o JSON.parse() nativo do navegador, que é totalmente compatível com o RFC 8259. Antes da serialização, a ferramenta verifica que o valor de nível superior é um objeto e procura valores null para poder avisar sobre chaves de objeto descartadas ou rejeitar um null dentro de um array com um caminho preciso.
Saída TOML 1.0.0 via smol-toml
O TOML é gerado com a biblioteca smol-toml, um serializador sem dependências e totalmente compatível com TOML 1.0.0. Os objetos aninhados tornam-se tabelas, os objetos profundamente aninhados tornam-se tabelas pontilhadas e os arrays de objetos tornam-se arrays de tabelas. Os floats com parte fracionária zero são escritos como inteiros conforme as regras do TOML, com um aviso.
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

Envolva arrays de nível superior sob uma chave
Se os seus dados forem naturalmente um array JSON, envolva-os num objeto com uma chave descritiva ({ "items": [...] }) antes de converter. Os documentos TOML têm de ser uma tabela na raiz, e a chave dá ao seu array um nome claro na saída.
Decida o que os nulls devem significar
Antes de converter, decida se um campo null deve desaparecer (descartar a chave) ou levar um valor. O TOML descarta os nulls de objeto e rejeita os nulls de array, por isso resolvê-los primeiro no seu JSON dá uma saída previsível e completa.
Use objetos aninhados para agrupar
Agrupe definições relacionadas em objetos aninhados no seu JSON — tornam-se [tabelas] e tabelas pontilhadas limpas em TOML, o que é muito mais legível do que uma lista plana de chaves, correspondendo à forma como as configs do Cargo e do pyproject estão organizadas.
Valide o seu JSON primeiro
Se o seu JSON for escrito à mão ou vier de uma fonte pouco fiável, valide-o com o nosso Formatador JSON para apanhar vírgulas finais e erros de aspas antes de converter para TOML.
Adicione comentários depois de converter
O JSON não tem comentários, por isso nenhum é transposto. Como o TOML suporta comentários #, adicione documentação ao TOML gerado à mão — uma das principais razões para mover a config editada por humanos para TOML, desde logo.

Perguntas frequentes

Como converto JSON para TOML online?
Cole o seu JSON no campo de entrada acima. A ferramenta analisa-o e produz TOML instantaneamente no navegador — sem necessidade de clicar num botão. Assim que o TOML 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 .toml. Tudo corre localmente, por isso o seu JSON nunca sai do seu dispositivo. Duas coisas a saber antes de começar: o nível superior do seu JSON tem de ser um objeto (não um array), e os valores null não têm equivalente em TOML — a ferramenta explica ambos claramente se surgirem.
O que é TOML e porquê converter JSON para ele?
TOML (Tom's Obvious, Minimal Language) é um formato de configuração concebido para ser fácil de ler e escrever por humanos, com semântica inequívoca. É o formato de configuração do Cargo do Rust, do pyproject.toml do Python, do Hugo, do Netlify, do Poetry e mais. Converte-se JSON para TOML quando uma ferramenta ou API lhe dá JSON mas o destino espera TOML — por exemplo, gerar um Cargo.toml ou pyproject.toml a partir de dados estruturados, ou transformar as definições JSON de uma aplicação num ficheiro de configuração TOML editável por humanos.
Porque tem o nível superior do meu JSON de ser um objeto?
Os documentos TOML são sempre uma tabela (um conjunto de pares chave-valor) na raiz — a especificação não permite um array, string ou número solto no nível superior. Por isso, um array JSON como [1, 2, 3] ou um valor solto como 42 não podem ser convertidos diretamente. A solução é envolvê-lo sob uma chave: { "items": [1, 2, 3] } converte-se de forma limpa em items = [1, 2, 3]. Esta ferramenta deteta um nível superior que não seja objeto e diz-lhe exatamente como o envolver, em vez de produzir uma saída quebrada.
O que acontece aos valores null ao converter JSON para TOML?
O TOML não tem tipo null, por isso null não pode ser representado. Esta ferramenta trata-o de forma segura e transparente de duas maneiras. Quando um null aparece como valor de objeto, o TOML simplesmente omite essa chave — e a ferramenta mostra um aviso listando exatamente que chaves foram descartadas, para que nunca seja surpreendido por perda silenciosa de dados. Quando um null aparece dentro de um array, não há saída TOML válida (um array não pode conter uma lacuna), por isso a ferramenta reporta um erro a apontar para o caminho exato do null problemático. De qualquer forma, sabe com precisão o que aconteceu e onde.
Como são convertidos os objetos e arrays aninhados para TOML?
Um objeto JSON aninhado torna-se uma tabela TOML: { "owner": { "name": "Tom" } } torna-se [owner] com name = "Tom". Objetos profundamente aninhados tornam-se tabelas pontilhadas como [tool.ruff]. Um array de objetos torna-se um array de tabelas escrito com parênteses retos duplos ([[servers]]), que é a forma idiomática do TOML de exprimir secções repetidas. Os arrays de escalares permanecem inline como arrays (ports = [8001, 8002]). A saída segue a especificação TOML 1.0.0.
O que acontece aos números de vírgula flutuante como 1.0?
O TOML distingue inteiros de floats, e um float cuja parte fracionária é zero (como 1.0) é escrito como o inteiro 1. Por isso { "version": 1.0 } torna-se version = 1. A ferramenta mostra um pequeno aviso quando esta coerção acontece, porque muda o tipo do valor num ida-e-volta. Se precisa que o valor permaneça um float, essa distinção não pode ser preservada através do TOML para números inteiros — pondere se um inteiro é realmente o que quer.
Os meus dados JSON são enviados para algum servidor?
Não. Toda a análise e conversão acontecem inteiramente no seu navegador usando JavaScript. O seu JSON nunca é carregado, nunca é armazenado e nunca é registado. Isto torna a ferramenta segura para configuração que contenha chaves de API, credenciais de base de dados ou detalhes de serviços internos. Pode verificá-lo abrindo o separador Rede do seu navegador — colar JSON desencadeia zero pedidos de rede.
Posso converter TOML de volta para JSON?
Sim. Use o Conversor de TOML para JSON 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. O TOML para JSON tem menos restrições — aceita qualquer TOML válido — por isso fazer o ciclo JSON → TOML → JSON é fiável desde que o seu JSON não tivesse nulls ou um array de nível superior à partida.
Como converto JSON para TOML na linha de comandos?
Uma opção popular é a ferramenta Go 'yj' (yj -jt lê JSON e escreve TOML). Em Python pode usar o pacote de terceiros 'tomli-w': import json, tomli_w; tomli_w.dump(json.load(open('config.json')), open('config.toml','wb')). Em Node.js: import { stringify } from 'smol-toml'; const toml = stringify(JSON.parse(text)) — a mesma biblioteca que esta ferramenta usa. Para algo rápido e pontual sem instalar nada, esta ferramenta de navegador é o caminho mais rápido.
Como converto JSON para TOML em Python, Rust ou Node.js?
Em Python: import json, tomli_w; tomli_w.dump(json.load(open('config.json')), open('config.toml','wb')). Em Rust: use serde_json e toml — let value: serde_json::Value = serde_json::from_str(&text)?; let toml = toml::to_string_pretty(&value)?. Em Node.js: import { stringify } from 'smol-toml'; const toml = stringify(JSON.parse(text)) — esta é exatamente a abordagem usada por esta ferramenta. Lembre-se de que o valor de nível superior tem de ser um objeto em todos estes casos.
O conversor preserva a ordem das chaves?
As chaves dentro de uma tabela são preservadas na sua ordem original, mas a estrutura do TOML exige que todos os pares chave-valor simples de uma tabela venham antes de quaisquer cabeçalhos de tabela filhos. Por isso, os escalares de nível superior são emitidos primeiro, depois as tabelas e os arrays de tabelas — o conversor reordena apenas onde a gramática do TOML o exige. Os dados são idênticos; apenas a ordenação textual das secções de tabela se desloca para produzir TOML válido.
Existe um limite de tamanho de ficheiro para a entrada JSON?
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. As cargas de configuração típicas convertem-se em bem menos de 50 milissegundos.

Ferramentas relacionadas

Ver todas as ferramentas →