Formatador e validador de JSON
Roda no seu navegador; nada é enviado
Formate, valide e minifique JSON. Os erros apontam a linha e a coluna exatas.
Input
Formatted JSON appears here as you type.
O que o formatador faz
JSON é o formato que a maioria das APIs web usa no corpo das requisições e respostas. Os servidores costumam enviá-lo minificado, sem espaços nem quebras de linha, o que é compacto mas difícil de ler. Formatar (pretty-print) adiciona indentação para você ver quais chaves pertencem a qual objeto; minificar remove de novo.
Para formatar JSON a ferramenta precisa fazer o parse, então formatar também valida. Se o texto não for JSON válido, você vê a linha e a coluna onde o parse parou, o que era esperado ali e a causa mais comum. Comentários, vírgulas sobrando no final, aspas simples, chaves sem aspas e o True/None do Python podem ser corrigidos para você: a ferramenta lista cada alteração antes e não aplica nada até você confirmar.
Aqui, formatar nunca altera um valor. A ferramenta usa um parser próprio em vez de JSON.parse, então os números mantêm os dígitos com que foram escritos (12345678901234567890 e 1.50 ficam como estão), escapes como \u00e9 continuam sendo escapes e chaves duplicadas ficam onde estavam. Quando um documento tem dados que o JSON.parse alteraria, como inteiros acima de 2^53 ou uma chave que aparece duas vezes, o Inspector lista isso em Data warnings.
Como usar esta ferramenta
- 1Cole JSON no painel Input, arraste um arquivo
.jsonpara ele ou pressione Ctrl+O para abrir um (até 5 MB). Em Examples há amostras para testar. - 2A aba Output mostra o resultado enquanto você digita. Escolha a indentação (2 espaços, 4 espaços ou tabs), ordene as chaves ou alterne entre Pretty e Minified. As setas na margem recolhem objetos e arrays.
- 3Para reescrever a própria entrada, use Format (Shift+Alt+F) ou Minify (Shift+Alt+M). Ctrl+Z desfaz qualquer um dos dois, assim como Clear e as correções aplicadas.
- 4Se o JSON for inválido, a barra de status e a aba Output mostram onde. Pressione F8 para colocar o cursor no erro, ou Review fixes para ver os reparos automáticos.
- 5Tree, Table, JSONPath e Compare mostram os mesmos dados de outras formas: selecione um nó da árvore para copiar o caminho ou o valor, consulte com uma expressão como
$.items[?(@.price < 10)].id, ou cole um segundo documento para listar o que mudou. - 6Copie a saída, ou baixe-a formatada ou minificada (Ctrl+S). Pressione ? para ver todos os atalhos de teclado.
Solução de problemas
- Vírgula no final: remova a
,antes do} - JSON não permite vírgula depois do último item de um objeto ou array. Apague-a ou use Review fixes. Ela costuma vir de código JavaScript ou de um arquivo de configuração escrito à mão.
- Os nomes das propriedades precisam estar entre aspas duplas
- O texto é um objeto literal de JavaScript (
{name: 'x'}), não JSON. Toda chave e toda string precisam de aspas duplas. Review fixes adiciona as aspas. Trueé Python; JSON usatrue- Os dados foram impressos com
print()oustr()do Python. Usejson.dumps()para gerar JSON, ou deixe Review fixes trocarTrue,FalseeNone. - Fim de entrada inesperado: o objeto aberto na linha 1 não foi fechado
- O texto termina antes de todos os
{e[serem fechados. Provavelmente uma resposta copiada foi cortada; copie de novo, ou salve num arquivo e abra esse arquivo. - Conteúdo inesperado depois do valor JSON
- Há dois ou mais valores JSON um depois do outro. Coloque-os dentro de um array ou, se forem logs em JSON delimitado por quebra de linha (NDJSON), verifique uma linha por vez.
- O texto começa com um byte order mark (BOM)
- O arquivo foi salvo como "UTF-8 com BOM". Muitos parsers rejeitam essa marca invisível no início. Salve como UTF-8 simples ou use Review fixes para removê-la.
- Strings não podem ocupar várias linhas
- Uma string contém uma quebra de linha real, muitas vezes por colar texto com quebras. Troque a quebra por
\n. - Um número no seu código é diferente do que está no JSON
- Inteiros acima de 9.007.199.254.740.991 perdem precisão quando o JavaScript faz o parse, então um ID de 19 dígitos pode mudar. Esta ferramenta mostra os dígitos como foram escritos e avisa sobre eles; na sua API, envie esses IDs como strings.
Perguntas frequentes
Meu JSON é enviado para algum lugar?
Não. O parse, a formatação e todas as visualizações rodam na aba do seu navegador. Para sobreviver a um reload, o que você cola fica no session storage desta aba até você limpar ou fechar a aba. Copy link coloca a entrada no link depois do #, parte que os navegadores nunca enviam a um servidor, mas qualquer pessoa que receber o link consegue ler. Suas configurações, como a indentação, ficam salvas neste navegador.
Formatar altera meus dados?
Não. Os valores são copiados exatamente como foram escritos, incluindo números grandes, escapes e chaves duplicadas. Duas opções mudam o texto de propósito: Sort keys reordena as chaves (pelo código do caractere, então maiúsculas vêm antes de minúsculas) e Minify remove os espaços fora das strings.
O que acontece com chaves duplicadas?
Elas são mantidas e mostradas como foram escritas, com um aviso. O padrão JSON não define o que fazer com chaves duplicadas; o JSON.parse e a maioria das bibliotecas ficam só com o último valor, então o código que ler este documento provavelmente verá apenas um deles. As visualizações Table, Compare e JSONPath seguem a mesma regra de que o último vence.
Qual sintaxe de JSONPath é suportada?
A sintaxe comum de Goessner: $ para a raiz, .key e ['key'], índices (inclusive negativos), [*] e .. para busca recursiva, uniões como [0,2], fatias como [1:3] e filtros como [?(@.price < 10 && @.inStock)]. Os filtros comparam números como números do JavaScript, então inteiros acima de 2^53 são comparados de forma aproximada.
Qual o tamanho máximo de arquivo?
Arquivos de até 5 MB abrem diretamente. Um documento de cerca de 4 MB leva uma fração de segundo para ser verificado e formatado num notebook comum; acima de uns 200 KB, a ferramenta espera uma pausa na digitação antes de verificar de novo. Aninhamento com mais de 2.000 níveis é informado como erro.