Pular para o conteúdo

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.

JSON

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

  1. 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.
  2. Confira o TOML à direita: as chaves escalares vêm primeiro, depois as seções [table] e [[array]].
  3. 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.

Especificações e referências