Pular para o conteúdo

Verificar seu JSON

Não só válido ou inválido — a linha, a coluna, o caractere e o que fazer a respeito. Nada fica armazenado; a verificação acontece aqui mesmo.

  • Nunca armazenado
  • Sem fila, sem espera
  • Sem cadastro, sem marca d'água
Formatado

Cole o JSON e ele é verificado enquanto você digita.

Como funciona

1

Cole seu JSON

Ou solte o arquivo. Ele é lido onde está; nada é enviado a lugar nenhum.

2

Leia o veredito

Válido, com uma contagem do que há dentro. Ou inválido, com o ponto exato marcado.

3

Corrija e verifique de novo

Edite ali mesmo e a resposta se atualiza enquanto você digita.

O que o JSON realmente proíbe

A gramática do JSON é propositalmente mínima, e quase toda falha de validação é uma das poucas coisas que as pessoas trazem do JavaScript e que o JSON nunca adotou. Uma vírgula final depois do último elemento. Aspas simples em vez de duplas. Chaves sem aspas. Comentários — o JSON não tem, e nunca teve. NaN e Infinity, que são números válidos em JavaScript e não são JSON válido. E uma marca de ordem de bytes (BOM) no início, invisível em qualquer editor, que algumas ferramentas do Windows acrescentam ao salvar em UTF-8 e que faz um documento perfeitamente bom falhar no primeiro caractere.

Duas coisas são permitidas e ainda assim vão lhe dar trabalho, e é por isso que “válido” não é o mesmo que “correto”. Chaves duplicadas não são proibidas pela especificação — e cada parser as resolve de um jeito, a maioria ficando com a última, então um documento com uma chave repetida é validado aqui e significa coisas diferentes em linguagens diferentes. E os números não têm limite de precisão definido no JSON, enquanto a maioria dos parsers os lê como ponto flutuante: um inteiro acima de uns nove quatrilhões é arredondado sem aviso, e é por isso que identificadores grandes tantas vezes são transmitidos como strings.

O que você recebe é a linha, a coluna e o caractere exatos em que a interpretação parou, o que costuma ser mais útil do que a própria mensagem. Um parser informa o ponto em que o documento deixou de fazer sentido, não onde o erro foi cometido — uma chave de fechamento faltando é apontada no fim do arquivo, e uma vírgula faltando é apontada no token seguinte. Olhar logo antes da posição informada é o hábito que mais economiza tempo.

Bem formado não é o mesmo que correto, e a distinção importa. Isto confirma que a sintaxe é interpretada. Se o documento tem os campos que a sua API exige, se um valor está dentro do intervalo, se uma data é realmente uma data — nada disso é uma questão de JSON. Isso é validação de schema, exige um schema, e um documento pode estar impecável aqui e ser rejeitado imediatamente pelo serviço para o qual você o envia.

Quando você precisa de outra coisa

Para verificar documentos em relação a um schema em vez de uma gramática, o JSON Schema é o padrão e o ajv é a implementação mais rápida dele — ele informa que um campo obrigatório está faltando ou que um valor está fora do intervalo, que geralmente é a pergunta que você realmente tem. O check-jsonschema faz as mesmas verificações na linha de comando e em CI.

Para qualquer coisa na linha de comando, o jq é a ferramenta a ter: jq empty file.json valida e não imprime nada em caso de sucesso, exatamente o certo para um script, e jq . formata. Para arquivos grandes demais para caber na memória, jq --stream e o ijson do Python interpretam de forma incremental, o que nenhuma página que carrega o documento inteiro consegue fazer.

Perguntas frequentes

Meu JSON fica armazenado em algum lugar?

Não. Não há chamada ao servidor nem registro, e nada fica armazenado. Você pode se desconectar da internet depois que a página carregar, e ela continua funcionando. Isso importa aqui mais do que parece: o que as pessoas colam em um formatador online são respostas de API, arquivos de configuração e payloads de erro, e eles costumam carregar tokens, dados de clientes e nomes de hosts internos.

O que ele me diz quando o JSON está quebrado?

A linha, a coluna, a própria linha com um acento circunflexo embaixo do caractere exato e o que era esperado ali. A maioria dos JSON quebra por um de quatro motivos — uma vírgula final, aspas simples em vez de duplas, uma chave sem aspas ou uma quebra de linha real dentro de uma string —, e cada um deles é identificado pelo nome, em vez de descrito como um erro de sintaxe genérico.

O que conta como válido?

A RFC 8259, de forma estrita. Isso significa chaves entre aspas duplas, nenhuma vírgula final, nenhum comentário e nada de zeros à esquerda ou hexadecimal nos números. Ser estrito é o propósito de um validador: se ele aceitasse o que o seu parser vai rejeitar, não teria dito nada útil.

Ele verifica meu JSON em relação a um schema?

Não — isto verifica a sintaxe, que é outra pergunta. Sintaxe é saber se o texto é JSON. Um schema é saber se os dados têm os campos e tipos certos. Esta página responde à primeira; ela informa que o arquivo é interpretado e mostra a estrutura que encontrou, mas não sabe como os seus campos deveriam ser.

Por que ele diz que é válido se a minha API continua rejeitando?

Porque JSON válido e o JSON que a sua API quer são coisas diferentes. Um documento sintaticamente perfeito ainda pode não ter um campo obrigatório, usar uma string onde deveria haver um número ou aninhar as coisas de um jeito diferente do que o endpoint espera. Compare o resumo da estrutura que esta página mostra com a documentação da API — a diferença costuma aparecer na hora.

Números grandes são verificados corretamente?

Sim, dígito por dígito — a maioria dos validadores os quebra sem avisar. Um número em JavaScript é um float de 64 bits, então só consegue guardar inteiros exatos até 9.007.199.254.740.991. Qualquer coisa maior — o ID de um post do Twitter/X, um snowflake do Discord, um número de conta bancária, uma chave de banco de dados de 64 bits — perde os últimos dígitos no momento em que passa por `JSON.parse`. O número continua parecendo plausível, e é isso que o torna perigoso: 7205759403792793600 vira 7205759403792793000 sem ninguém perceber. Esta página mantém exatamente os dígitos que você colou e informa quantos números precisou proteger.

Existe limite de tamanho?

A memória disponível, e não um limite que impomos. Documentos de alguns megabytes são formatados na hora; os muito grandes são limitados pelo quanto cabe na memória de uma vez, e não por nada do nosso lado.

Bom saber: Isto verifica se o JSON está bem formado, não se ele faz sentido. Um documento pode ser perfeitamente válido e ainda assim não ter os campos que a sua API espera — isso é validação de schema, que exige um schema. O que você recebe aqui é a linha, a coluna e o caractere exatos em que a interpretação parou.

Coloque esta ferramenta no seu site

Grátis para qualquer blog, página de turma ou artigo de ajuda. Cole um único trecho de código e seus visitantes podem usá-la direto na sua página.