Toda ferramenta neste site roda no seu navegador. Nao ha upload, nao ha conta e nao ha servidor que veja seu JSON, e este post explica como isso funciona, como verificar vo mesmo em vez de confiar, e o que as ferramentas deliberadamente nao fazem.
O que acontece quando voce cola
Quando voce abre uma pagina de ferramenta, seu navegador baixa uma pagina HTML e um pequeno arquivo JavaScript. Essa e toda a ferramenta. Quando voce cola um documento e clica em um botao, a analise e a impressao acontecem dentro da aba, e o resultado e escrito de volta na pagina. Nada e enviado a lugar nenhum, porque nao ha para onde enviar: o site nao tem backend para dados de ferramentas.
Isso tambem significa que nada e armazenado. Feche a aba e o documento desaparece. Nao ha historico para limpar, nao ha conta para deletar e nao ha cache guardando seus dados. O site mantem dois pequenos valores no seu navegador, sua escolha de tema e sua resposta ao aviso de cookies, e ambos ficam no seu dispositivo.
Verifique vo mesmo em trinta segundos
Qualquer afirmacao de privacidade que voce nao pode verificar e apenas uma frase em uma pagina. Esta leva meio minuto para testar:
- Abra qualquer ferramenta, por exemplo o formatador.
- Abra as ferramentas de desenvolvedor do seu navegador e mude para a aba Rede.
- Limpe a lista, cole um pouco de JSON e clique em Formatar.
Nada novo aparece na lista, porque nenhuma requisicao e feita. Compare isso com uma ferramenta que envia para um endpoint quando voce clica no botao, voce vera imediatamente no mesmo painel.
Ha uma excecao deliberada, e esta em uma pagina diferente: o formulario de contato realmente envia o que voce digita, ja que uma mensagem que fica no seu navegador nao e uma mensagem. Todo o resto fica local.
O projeto tambem afirma isso automaticamente. O suite de testes end-to-end cola um marcador unico em cada ferramenta, executa, e falha na build se esse marcador aparecer em qualquer requisicao que a pagina faça. Esse teste roda em toda build, entao a afirmacao nao pode deteriorar silenciosamente da proxima vez que alguem adicionar uma funcionalidade.
Por que as ferramentas leem tokens em vez de analisar
A maioria dos formatadores online faz algo assim internamente:
JSON.stringify(JSON.parse(input), null, 2)
Parece inofensivo e corrompe dados de duas maneiras especificas.
Inteiros longos perdem precisao. Numeros JavaScript sao doubles, entao um
inteiro maior que aproximadamente dezesseis digitos nao pode ser mantido
exatamente. Cole {"id": 12345678901234567890} em um formatador feito assim e
voce recebe 12345678901234567000 de volta. Nada avisa voce.
Chaves que parecem inteiros sao reordenadas. Objetos JavaScript ordenam
chaves semelhantes a inteiros numericamente, antes de tudo mais. Entao
{"2": "prata", "1": "ouro"} volta como {"1": "ouro", "2": "prata"}, isso
importa sempre que a ordem era significativa, e frequentemente e em um arquivo
de configuracao.
As ferramentas aqui nunca constroem um valor JavaScript a partir do seu documento. Elas tokenizam, mantendo o texto fonte exato de cada token, e reimprimem o fluxo de tokens com espacamento diferente. Seu documento volta byte a byte como voce escreveu, com apenas a mudanca de espacamento. Testes unitarios bloqueiam ambos os casos, para que um refactor futuro nao possa reintroduzir nenhum dos dois.
A mesma decisao percorre o resto do site. O visualizador mostra o texto que voce realmente escreveu ao lado de cada chave. O diff nao chamar dois inteiros de vinte digitos iguais apenas porque colapsam no mesmo double. O avaliador de ponteiro devolve a fonte exata do valor que ele resolveu.
Por que as mensagens de erro sao como sao
Um validador que diz “token inesperado” nao te disse nada que voce ja nao soubesse. A maior parte do trabalho no analisador aqui foi para as mensagens. Uma virgula final e reportada como uma virgola final. Um colchete nao fechado e reportado na linha onde o colchete foi aberto, nao no final do arquivo. Uma palavra-chave com caso errado sugere a grafia em minuscula. Uma chave duplicada produz um aviso com ambos os numeros de linha em vez de silencio.
Se voce quer o catalogo, o post sobre erros comuns de sintaxe JSON percorre os nove que aparecem mais, com a edicao que corrige cada um.
O que o site nao faz
Alguns padroes aqui sao implementados parcialmente. O testador JSONPath suporta os seletores que consultas reais usam e os lista na pagina. Extensoes de funcao e alguns outros cantos da RFC 9535 estao faltando, e usar uma produz uma mensagem nomeando a funcionalidade em vez de uma falha vaga. JSON Pointer e o caso oposto: a RFC 6901 tem quatro paginas, entao tudo e implementado.
Reparo pode mudar seus dados. NaN, Infinity e undefined nao tem equivalente
JSON, entao a ferramenta de reparo os transforma em
null e lista essas mudancas separadamente das correcoes de pontuacao. Leia essa
lista em vez de confiar na saida.
Documentos muito grandes degradam de proposito. Acima de aproximadamente duzentos mil caracteres, a coloracao de sintaxe desliga para que a digitacao continue suave, e a pagina diz quando isso acontece. O visualizador desenha uma ramo apenas quando voce abre, e alem de alguns mil valores ele se recusa a expandir todos de uma vez em vez de congelar a aba por um minuto.
Onde comecar
Se voce chegou com um documento quebrado, o validador dira o que esta errado e a ferramenta de reparo corrige as partes mecanicas. Se voce chegou com um documento funcional que nao entende, o visualizador e a maneira mais rapida de entrar. Todo o resto esta na pagina de ferramentas.