Formatador de JSON

Formate, valide, minifique e ordene JSON.

Sobre esta ferramenta

Cole JSON para formatá-lo com a indentação que você preferir, minificá-lo para transporte ou ordenar as chaves em ordem alfabética para deixar os diffs legíveis. Erros de sintaxe são mostrados com linha e coluna.

Como usar

  1. Cole o seu JSON na caixa Entrada, ou cole na busca com ⌘K e escolha Formatador de JSON.
  2. Escolha 2 espaços, 4 espaços, tabulações ou Minificar para deixar tudo em uma linha.
  3. Ative Ordenar chaves se quiser as chaves em ordem alfabética, o que facilita comparar duas versões.
  4. Copie o resultado. Se o JSON for inválido, o erro mostra a linha e a coluna a corrigir.

Perguntas

Por que o meu JSON é inválido?
As causas mais comuns são uma vírgula sobrando depois do último item, aspas simples em vez de duplas, chaves sem aspas ou comentários. O JSON não permite nada disso. A mensagem de erro aponta a linha e a coluna exatas.
Ele lê um dict do Python ou um objeto JavaScript?
Sim. Valores com aspas simples, True, False, None, chaves sem aspas ou vírgulas finais são convertidos automaticamente em JSON válido, e a linha de status avisa que isso aconteceu.
É seguro colar respostas de API com dados pessoais?
Sim. A formatação acontece no seu navegador e nada é enviado a um servidor, então você pode colar dados de produção sem que eles saiam da sua máquina.
Qual é a diferença entre formatar e minificar?
Formatar adiciona quebras de linha e indentação para que as pessoas consigam ler. Minificar remove todos os espaços opcionais para que o payload fique o menor possível para enviar pela rede.
O que acontece com chaves duplicadas em um objeto JSON?
O padrão JSON não proíbe chaves duplicadas, mas deixa o significado delas em aberto. Aqui, assim como no JSON.parse de todos os navegadores, o último valor vence, então {"a": 1, "a": 2} é formatado como {"a": 2}. Se uma chave parecer sumir depois da formatação, procure uma segunda cópia dela na entrada.
Dá para formatar um arquivo JSON grande?
Sim. Clique em Abrir arquivo ou solte o arquivo na caixa Entrada. Ele é lido localmente, nunca enviado, e arquivos de até 50 MB são aceitos. Documentos muito grandes deixam a rolagem da caixa de texto mais lenta, então use Baixar para salvar o resultado como formatted.json em vez de copiá-lo.
Como formatar JSON Lines ou NDJSON?
O JSON Lines coloca um valor JSON em cada linha, então o arquivo como um todo não é um JSON válido e o formatador aponta um erro onde começa o segundo valor. Formate uma linha de cada vez, ou transforme o arquivo em um array envolvendo-o em [ ] e adicionando uma vírgula no fim de cada linha, menos a última.

O que é um formatador e validador de JSON?

Um formatador de JSON pega um JSON compacto ou bagunçado e o imprime de novo com indentação consistente e uma chave por linha, deixando legíveis os dados aninhados. Um validador de JSON verifica se o texto segue a gramática do JSON: chaves e strings entre aspas duplas, sem vírgulas finais, sem comentários e só true, false e null como literais. Esta ferramenta faz as duas coisas de uma vez. Uma entrada válida volta formatada, e uma inválida mostra a mensagem do parser com linha e coluna.

Formatar JSON nunca altera os dados. Chaves, valores e a ordem dos arrays continuam exatamente como estavam, e só os espaços em branco mudam. Vale conhecer um limite: os números JSON são lidos como doubles do JavaScript, então inteiros acima de 9007199254740991 perdem precisão. Um ID como 12345678901234567890 volta como 12345678901234567000. Se uma API envia IDs tão grandes, peça que venham como strings, o que muitas APIs já fazem para IDs de 64 bits.

Como corrigir “Unexpected token” no JSON

“Unexpected token” significa que o parser de JSON encontrou um caractere que não pode aparecer naquele ponto. Leia a linha e a coluna no erro e olhe o texto logo antes desse ponto. Os culpados de sempre são uma vírgula final, como em [1, 2, ], uma chave sem aspas, uma string entre aspas simples, um comentário // copiado de um arquivo de configuração ou um valor como NaN ou Infinity, que o JavaScript imprime, mas o JSON não permite.

O erro “Unexpected token < in JSON at position 0” tem outra causa: o texto é uma página HTML, geralmente uma página de erro ou um redirecionamento para login, e não a resposta da API que você esperava. Confira o status HTTP e o cabeçalho Content-Type antes de fazer o parse. Quando a entrada é um dict do Python ou um literal de objeto JavaScript, o Formatador de JSON corrige aspas simples, True, False, None, chaves sem aspas e vírgulas finais, e lista cada correção na linha de status.

Ordenar as chaves do JSON? Boas práticas de indentação e ordenação

A ordem das chaves não tem significado em um objeto JSON, então ordená-las alfabeticamente é seguro e facilita comparar duas versões. Ordenar chaves funciona de forma recursiva: objetos aninhados também são ordenados, enquanto os arrays mantêm sua ordem, porque a posição importa dentro de um array. Ordene as duas versões e cole-as no Diff de texto: só as mudanças reais de valor aparecem, e não as chaves que apenas mudaram de lugar.

Para a indentação de JSON, 2 espaços é a escolha mais comum em projetos JavaScript e documentação de APIs, 4 espaços segue o hábito do json.dumps(indent=4) no Python, e tabs deixam cada leitor escolher a própria largura. JSON minificado é para payloads de rede, variáveis de ambiente e linhas de log, onde importa ter um registro por linha. Seja qual for a escolha, mantenha-a consistente no repositório para que reformatações não poluam o code review.

Algo não está funcionando ou um resultado parece errado? Relatar um problema com esta ferramenta