Formatador e validador JSON
Para formatar JSON online, cole o documento no campo acima e este formatador e validador JSON o verifica enquanto você digita. Uma entrada válida é exibida formatada com a indentação que você escolher, ou minificada em uma única linha. Uma entrada inválida recebe um erro preciso com linha e coluna, um trecho destacado e, para os erros mais comuns, uma correção com um clique. Tudo roda no seu navegador, então respostas de API, arquivos de configuração e exportações nunca saem do seu computador.
O que este formatador e validador JSON faz
- Formatar JSON com 2 espaços, 4 espaços ou tabulação. A saída mantém a ordem original das chaves, a menos que você marque Ordenar chaves.
- Minificar JSON removendo todos os espaços e quebras de linha. O indicador de tamanho abaixo do resultado mostra quantos bytes você economizou.
- Validar JSON em tempo real conforme a RFC 8259, o padrão JSON atual. A linha de status fica verde assim que o documento está correto.
- Corrigir erros comuns automaticamente: vírgulas sobrando no final, aspas simples, chaves sem aspas, comentários,
True,NoneeNaNno estilo Python, números como.5ou+1. - Carregar arquivos com o botão Abrir arquivo ou arrastando um arquivo
.jsonpara a entrada. Depois é só baixar o resultado ou mandá-lo de volta para a entrada para mais uma passada.
Por que a mensagem de erro importa mais do que a cor vermelha
A maioria dos validadores online só diz que algo está errado. Os navegadores não ajudam muito mais: JSON.parse no Chrome informa Unexpected token } in JSON at position 148, enquanto o Firefox diz expected property name or '}', e nenhum dos dois indica em qual linha procurar. Esta ferramenta tem um parser próprio que guarda onde cada token começa. Quando ele para, você recebe a linha e a coluna, um trecho dessa linha com um sinal ^ embaixo do caractere problemático e uma dica em linguagem simples, como Provavelmente falta uma vírgula entre duas propriedades. O botão Ir para o erro leva o cursor direto para essa posição na entrada.
Os erros mais frequentes que vemos em documentos colados:
| Entrada | Problema | JSON correto |
|---|---|---|
{'name': 'Ada'} | aspas simples | {"name": "Ada"} |
{name: "Ada"} | chave sem aspas | {"name": "Ada"} |
[1, 2, 3,] | vírgula sobrando no final | [1, 2, 3] |
{"a": 1 "b": 2} | vírgula faltando | {"a": 1, "b": 2} |
{"ok": True} | literal do Python | {"ok": true} |
{"x": 007} | zero à esquerda | {"x": 7} ou {"x": "007"} |
// comment | comentário | não permitido em JSON |
O botão Corrija para mim corrige todos esses casos, exceto a vírgula faltando e o zero à esquerda. A correção é conservadora de propósito: ela nunca tenta adivinhar onde falta uma vírgula, porque inserir uma no lugar errado muda o significado dos dados, e 007 pode ser tanto o número 7 quanto um código. Nesses casos, você recebe a posição exata.
Números grandes, ordem das chaves e outras coisas que costumam quebrar
Muitos formatadores funcionam chamando JSON.parse e depois JSON.stringify. Essa ida e volta danifica os dados sem avisar. Um ID do Twitter ou do Snowflake como 1234567890123456789 ultrapassa o limite de 2^53 dos números em JavaScript e volta como 1234567890123456800. O valor 1.0 vira 1, e 1e3 vira 1000. Este formatador nunca converte números para ponto flutuante. Ele copia cada literal exatamente como foi escrito, então a saída é uma reformatação fiel da entrada, não uma reinterpretação dela. O mesmo vale para as sequências de escape dentro de strings: "\u00e9" continua "\u00e9" e não é transformado em "é".
A ordem das chaves também é preservada. A especificação do JSON diz que os membros de um objeto não têm ordem, mas arquivos de configuração, fixtures de teste e revisões de código ficam muito mais legíveis quando a ordem é estável. Se você prefere uma forma canônica, por exemplo para comparar duas respostas de API em uma ferramenta de diff, ative Ordenar chaves e os dois documentos vão listar as propriedades em ordem alfabética em todos os níveis de aninhamento.
Formatar JSON ou minificar JSON: quando usar cada um
JSON formatado é para pessoas. Use quando for revisar uma resposta de API, escrever um package.json, um tsconfig.json ou um documento OpenAPI, ou quando guardar fixtures em um repositório em que os diffs devem mostrar uma mudança por linha. Dois espaços é a convenção no mundo JavaScript, quatro espaços é comum em projetos Python e .NET, e a tabulação deixa cada leitor escolher a largura que preferir.
JSON minificado é para máquinas. Os espaços em branco costumam ocupar de 20 a 40 por cento de um documento formatado, então removê-los reduz o que é enviado aos navegadores, os valores guardados no Redis ou em uma coluna do banco de dados e os atributos data-* incorporados no HTML. O gzip diminui parte dessa diferença, mas a versão minificada ainda fica menor depois de comprimida. O indicador de tamanho abaixo do resultado mostra a diferença exata para o seu documento.
Como formatar JSON no terminal e nos editores
Para arquivos que você processa com frequência, uma ferramenta de linha de comando é mais rápida do que qualquer site. jq . file.json formata, jq -c . file.json minifica e python -m json.tool file.json funciona em qualquer máquina com Python instalado. O Visual Studio Code formata JSON com Shift+Alt+F e o valida contra um schema quando você adiciona a propriedade $schema. Esta página é para os outros casos: uma resposta copiada da aba Rede das ferramentas de desenvolvedor, uma linha de log, um trecho de configuração de uma wiki ou uma verificação rápida em uma máquina onde você não pode instalar nada.
Ferramentas relacionadas neste site: o codificador e decodificador Base64 decodifica a parte de dados (payload) de um JWT, que é JSON codificado em Base64url. O conversor de timestamp UNIX transforma os números createdAt presentes na maioria das respostas de API em datas legíveis, e o decodificador de UUID mostra a versão e o timestamp dos identificadores nos seus dados. Mais utilitários estão em ferramentas para desenvolvedores.
Perguntas frequentes
Meu JSON é enviado para algum servidor?
Não. A análise, a formatação e a correção rodam inteiramente no seu navegador, em JavaScript. Depois que a página carrega, você pode desligar a internet e a ferramenta continua funcionando. Nada é registrado nem armazenado.Por que o validador rejeita comentários se o meu editor aceita?
Os comentários foram retirados do JSON de propósito pelo seu criador, Douglas Crockford, para evitar que o formato fosse usado para diretivas de parser. Arquivos comotsconfig.json ou .vscode/settings.json são, tecnicamente, JSONC, um superconjunto que os editores suportam. Parsers estritos em APIs, bancos de dados e na maioria das linguagens de programação os rejeitam. O botão de correção remove os comentários para que o resultado seja válido em qualquer lugar.
Posso formatar JSON Lines ou vários objetos de uma vez?
Um documento JSON contém exatamente um valor. Se você colar vários objetos separados por vírgulas ou quebras de linha, o validador para no primeiro valor a mais. Coloque todos entre colchetes para formar um array e depois formate. O botão de correção não faz isso automaticamente porque não tem como saber se a entrada deveria ser um único documento.Qual é o tamanho máximo?
Não há um limite fixo. Documentos de alguns megabytes são formatados em bem menos de um segundo em um notebook. O destaque de sintaxe é desativado acima de cerca de 400 kB para manter a página responsiva, mas copiar e baixar continuam funcionando.Ordenar as chaves altera os dados?
Não. Os objetos em JSON não têm ordem por definição, veja o artigo sobre JSON na Wikipédia, então um parser lê o documento ordenado e o original como o mesmo valor. Os arrays nunca são reordenados, porque a ordem deles faz parte dos dados.Como escapar JSON para colocá-lo dentro de uma string?
Primeiro minifique, depois escape cada barra invertida e cada aspa dupla. Muitas linguagens fazem isso diretamente:JSON.stringify(JSON.stringify(obj)) em JavaScript ou json.dumps(json.dumps(obj)) em Python produzem uma string JSON que contém o texto JSON.