O que esta ferramenta faz
Um documento TOML vira JSON. As tabelas aninham, e os [[arrays de tabelas]] viram arrays.
title = "Demo"
[server]
host = "localhost"
port = 8080
{
"title": "Demo",
"server": {
"host": "localhost",
"port": 8080
}
}
As chaves pontuadas aninham do mesmo jeito: a.b.c = 1 te dá {"a": {"b": {"c": 1}}}.
Os inteiros grandes, intactos
snowflake = 1096285471735640155
{
"snowflake": 1096285471735640155
}
O TOML pede inteiros com sinal de 64 bits, e um número JavaScript só guarda 53 exatos. O analisador respondia ao documento inteiro com “integer value cannot be represented losslessly” — um arquivo TOML legal, recusado por causa de um identificador. Agora os algarismos viajam como algarismos: o JSON é escrito por um serializador sem perda, o mesmo que em todo este site mantém os números grandes intactos. Era um defeito real, encontrado ao escrever esta página e corrigido.
inf e nan são nomeados, não anulados
rate = inf
JSON has no infinity: "rate" is inf
O TOML tem inf, -inf e nan; o JSON não tem nenhum dos três, e o JSON.stringify escreve todos como null. Uma taxa infinita virava uma taxa ausente, e nada no resultado dizia isso. A ferramenta agora para no valor e nomeia a chave que o carrega, assim como já recusa um null no caminho de volta ao TOML. O que pôr no lugar — uma string, um número muito grande, nenhuma chave — é uma decisão sobre os seus dados, não uma leitura.
O que o JSON não tem
- Um tipo data.
1979-05-27T00:32:00-07:00vira a string"1979-05-27T00:32:00.000-07:00". O fuso é mantido; os milissegundos são escritos mesmo quando a fonte não os tinha. - Dois tipos de número. O TOML separa inteiro de float, o JSON tem um número só:
1.0chega como1. Converta de volta e você terá um inteiro onde escreveu um float. - Comentários. Eles documentam o arquivo, não os dados, e não há onde colocá-los.
Um arquivo que começa com uma marca de ordem de bytes — o invisível U+FEFF que os editores do Windows gostam de acrescentar — era recusado com uma mensagem sobre os caracteres permitidos numa chave, apontando para um caractere que não se vê. Agora ela é removida antes da leitura.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.