Ir para o editor JSON
JSON Formatter Viewer

Validador JSON

input.json

Cole seu JSON aqui

ou solte um arquivo .json em qualquer ponto desta área

A saída formatada aparece aqui.

Aguardando uma entrada

O que o painel de erros mostra

As mensagens do analisador nativo são curtas e variam por navegador — Unexpected token } quase não diz o que mudar. Quando a validação falha, quatro coisas são informadas no lugar:

  • Linha e coluna, derivadas do deslocamento de caractere que o analisador informou.
  • A linha de origem com um marcador sob o caractere exato, recortada para que o marcador continue visível mesmo em uma linha minificada de 4.000 caracteres.
  • O que o analisador esperava, reescrito em linguagem simples em vez da string crua do motor.
  • Uma causa provável, inferida ao inspecionar a origem em volta da falha procurando os erros listados abaixo.

A linha problemática também é marcada na margem do editor, e Ir para o erro coloca o cursor no caractere para você corrigir e ver o status virar válido enquanto digita.

Todas as causas comuns e como corrigir

Vírgula final

Válida em JavaScript, inválida em JSON. O analisador informa que esperava um nome de propriedade ou um valor, porque depois de uma vírgula ele exige outro membro.

{ "a": 1, "b": 2, }   ✗
{ "a": 1, "b": 2 }     ✓

Aspas simples

Strings JSON usam aspas duplas, tanto em chaves como em valores. Sem exceção.

{ 'name': 'ada' }      ✗
{ "name": "ada" }      ✓

Nomes de propriedade sem aspas

Literais de objeto do JavaScript aceitam identificadores nus como chaves; JSON não. É a razão mais comum para um trecho copiado do código-fonte não validar.

{ name: "ada" }        ✗
{ "name": "ada" }      ✓

Comentários

JSON não tem sintaxe de comentário — de propósito. Se você precisa de anotações em um arquivo de configuração, use uma chave "_comment" ou um formato que os suporte, como JSON5, YAML ou TOML. Reparar remove comentários // e /* */ para que você pelo menos consiga ler os dados.

Literais de Python e JavaScript

True, False e None vêm de colar um repr do Python; undefined, NaN e Infinity vêm do JavaScript. O JSON tem exatamente três palavras-chave, todas minúsculas: true, false e null. Não há como expressar NaN ou infinito em JSON — use null ou uma string sentinela.

Caracteres não escapados dentro de strings

Uma quebra de linha literal, uma tabulação ou uma aspa dupla não escapada dentro de uma string a encerram cedo, e o erro geralmente aparece alguns tokens depois do erro real. Escape-os como \n, \t e \". Caracteres de controle crus abaixo de U+0020 nunca são permitidos.

Vários valores de primeiro nível

Um documento JSON contém um valor. Dois objetos separados por uma quebra de linha são NDJSON — um formato diferente e muito útil, mas que precisa ser analisado linha por linha. Reparar reconhece isso e embrulha as linhas em um array para você ver o arquivo inteiro de uma vez.

Válido, mas arriscado

Passar na validação não significa que um documento é seguro. Duas coisas são JSON legítimo e ainda assim causam problemas reais:

  • Chaves duplicadas. A gramática permite; o comportamento depende da implementação. O JavaScript mantém a última ocorrência, então dados podem desaparecer em silêncio.
  • Inteiros acima de 253−1. Qualquer consumidor baseado em JavaScript perde precisão ao analisar. Se seus identificadores são de 64 bits, serialize-os como strings.

Depois que o documento valida, o visualizador em árvore é o jeito mais rápido de conferir se a estrutura é a esperada, e formatar a torna revisável.

Perguntas frequentes

Qual especificação de JSON é usada?

O analisador nativo do navegador, que implementa a RFC 8259 e o ECMA-404. Na prática as duas são equivalentes, e a RFC 8259 substitui a RFC 7159 e a RFC 4627. Um documento que valida aqui é analisado em Node, Python, Go e Java.

Isso confere meu JSON contra um JSON Schema?

Não: valida a sintaxe, não a forma. Responde “isso é JSON analisável?” e não “isso atende ao meu contrato?”. Validação estrutural contra um schema precisa do schema, e roda melhor na sua suíte de testes que em uma aba do navegador.

Por que a coluna informada difere do meu editor?

As colunas são contadas em caracteres começando em 1, igual ao que o analisador informa. Editores que exibem tabulações como várias colunas mostrarão um número maior nas linhas que começam com tabulação. O marcador do painel de erros sempre aponta para o caractere certo.

Um documento vazio é JSON válido?

Não. A RFC 8259 exige exatamente um valor, então um arquivo vazio é inválido. null, 0, false, "", [] e {} são documentos válidos por si sós.

O resto das ferramentas

O mesmo motor e a mesma privacidade — cada página roda inteiramente no seu navegador.