Converter JSON em TOML — Numio
Converte um objeto JSON em TOML. Objetos aninhados viram seções [table], arrays de objetos viram [[array of tables]] e chaves com valor null são descartadas porque TOML não tem null.
Transformar uma configuração JSON na sintaxe de pyproject.toml, Cargo.toml, wrangler.toml ou da configuração do Hugo.
Quando usar
- Transformar uma configuração JSON na sintaxe de pyproject.toml, Cargo.toml, wrangler.toml ou da configuração do Hugo.
- Levar configurações geradas por um script em JSON para um arquivo de configuração baseado em TOML.
Como usar
- Cole um objeto JSON (a raiz deve ser um objeto, não um array) no editor da esquerda ou use o botão de carregar arquivo para abrir um arquivo UTF-8.
- Confira o TOML à direita: as chaves escalares vêm primeiro, depois as seções [table] e [[array]].
- Copie o resultado e compare-o com as chaves documentadas da ferramenta de destino antes de substituir sua configuração.
Objeto JSON
{
"title": "My App",
"port": 8080,
"debug": false,
"owner": { "name": "Ada", "since": "2024-01-05T10:00:00Z" },
"servers": [
{ "host": "a.example.com", "weight": 3 },
{ "host": "b.example.com", "weight": 1 }
],
"ports": [80, 443]
}TOML
title = "My App" port = 8_080 debug = false ports = [ 80, 443 ] [owner] name = "Ada" since = "2024-01-05T10:00:00Z" [[servers]] host = "a.example.com" weight = 3 [[servers]] host = "b.example.com" weight = 1
Detalhes e limitações
Inteiros a partir de 1000 recebem sublinhados como separadores (8080 vira 8_080). Isso é TOML válido e é interpretado como o mesmo número.
Strings de data continuam como strings entre aspas; JSON não tem tipo data, então nenhum valor datetime do TOML é gerado.
Chaves com valor null são omitidas sem aviso, e 1.0 no JSON é escrito como o inteiro 1.
Roda no seu navegador com @iarna/toml. Uma lista que mistura objetos com outros valores é rejeitada, porque arrays de tabelas do TOML não podem contê-los. Subtabelas são indentadas com dois espaços; o TOML ignora isso.
FAQ
Posso converter um array JSON na raiz?
Não. Um documento TOML precisa ser uma tabela, então a página explica que o JSON é um array e sugere envolvê-lo em um objeto, por exemplo {"items": [...]}.
O que acontece com valores null?
A chave é descartada. {"a": null} gera uma saída vazia. Use uma string vazia ou remova a chave de propósito se o destino a esperar.
Por que os números contêm sublinhados?
O serializador formata inteiros grandes com separadores de dígitos _, permitidos pela especificação do TOML. Qualquer parser TOML lê 8_080 como 8080.