O que faz
Cole um JSON e a ferramenta o valida e, em seguida, o formata, minifica ou ordena. O que a distingue de um simples JSON.parse é o que ela informa quando algo está errado ou incomum: um erro de análise indica a linha, a coluna e o caminho exatos do problema; chaves de objeto repetidas são sinalizadas; e números muito grandes ou muito precisos são preservados exatamente, em vez de arredondados. Tudo roda no seu navegador.
Um analisador feito para diagnóstico
O motor é um analisador escrito à mão que rastreia a posição enquanto lê, em vez de depender da análise nativa do runtime JavaScript. Isso traz três vantagens que importam na prática:
- Erros precisos. Quando a análise falha, você recebe a linha, a coluna, o deslocamento em bytes, uma mensagem em linguagem clara e o caminho JSON Pointer (RFC 6901) até o local, em vez de um único
SyntaxErrordependente do motor e sem caminho. - Detecção de chaves duplicadas. A gramática JSON tecnicamente permite que um objeto repita uma chave, e o
JSON.parsemantém silenciosamente apenas a última. Esse comportamento silencioso esconde bugs reais, então este motor relata cada duplicata que encontra, por caminho. - Números grandes exatos. Números JSON não têm limite de tamanho, mas um número JavaScript é um ponto flutuante de 64 bits e perde precisão acima de 2^53. O formatador preserva os dígitos que você escreveu, de modo que um id de 20 dígitos ou um decimal de alta precisão não seja arredondado silenciosamente.
Formatar, minificar e ordenar
Uma vez que o JSON é válido, você pode formatá-lo com indentação consistente, minificá-lo para a menor forma em linha única ou ordenar as chaves dos objetos para que dois documentos que diferem apenas na ordem das chaves fiquem alinhados para comparação. A ordenação é por chave e não reordena arrays, cuja ordem é significativa em JSON.
Exemplos
{"b":1,"a":2}ordenado por chave vira{"a":2,"b":1}.{ "a": 1 }minificado vira{"a":1}, com os espaços em branco removidos.{"id":10000000000000001}mantém todos os seus dígitos, enquanto uma ida e volta por um ponto flutuante de 64 bits o transformaria em10000000000000000.{"a":1,"a":2}é sinalizado pela chave duplicadaa; um analisador comum manteria silenciosamente2.
Como usar
Cole um documento JSON e escolha formatá-lo, minificá-lo ou ordená-lo. Se ele não for analisável, o erro aponta o ponto exato; se for analisável mas tiver chaves duplicadas ou números grandes demais, isso é destacado. A ferramenta é uma função pura da entrada, então o mesmo documento sempre dá o mesmo resultado.