Pular para o conteúdo principal

Validar JSON

O validador de JSON executa a validação de sintaxe estrita do RFC 8259 diretamente no seu navegador, sem transmitir o seu payload pela rede. Ele aponta a linha e a coluna exatas dos erros de sintaxe com um ponteiro de circunflexo visual, um diagnóstico em linguagem simples e uma classificação específica para vírgulas finais, aspas simples, chaves sem aspas, delimitadores sem par, BOMs e aspas curvas de processador de texto.

Só local
Aguardando entrada — cole um documento JSON ou clique em “Carregar exemplo”
Documento JSON a validar
0 B1 linhaLin. 1, Col. 1

Como funciona o Validar JSON?

As implementações padrão de JSON.parse() dos navegadores mostram mensagens de erro notoriamente inúteis, como "Unexpected token in JSON at position 4812" . Essa exceção crua obriga o desenvolvedor a contar offsets de bytes manualmente e a adivinhar qual aspa, vírgula ou colchete está no lugar errado.

O validador do ToolsByUs implementa um scanner léxico não recursivo e um validador de tokens dedicados, que rastreiam números de linha, posições de coluna, pilhas de aninhamento de delimitadores e lookaheads de caracteres conforme o RFC 8259:

  • Zero exceções cruas: as exceções são capturadas e traduzidas em relatórios de diagnóstico acionáveis, com trechos de circunflexo exatos apontando para o caractere problemático na linha e na coluna exatas.
  • Classificação explícita de erros: identifica com precisão vírgulas finais, chaves de objeto sem aspas, delimitadores de aspas simples, vírgulas separadoras faltando e delimitadores sem par (por exemplo, fechar um array com uma chave).
  • Detecção de aspas curvas e BOM: pega marcas de ordem de byte UTF-8 (Byte Order Marks, 0xFEFF) invisíveis e sutis e aspas curvas ( “, ” ) frequentemente introduzidas ao copiar JSON de editores de rich text ou processadores de texto.
  • Gramática estrita de números: rejeita números não finitos do IEEE 754 como NaN, Infinity, e zeros à esquerda em números (como 012 ), que violam a Seção 6 do RFC 8259.
  • Proteção para profundidade de 10,000: usa uma máquina de estados finitos iterativa que valida estruturas profundamente aninhadas sem encontrar estouro de pilha de chamadas do navegador.

O parser funciona mantendo uma máquina de estados que transita entre os estados BEFORE_KEY, AFTER_KEY, COLON, BEFORE_VALUE e AFTER_VALUE enquanto verifica que os delimitadores estruturais de abertura ( [ e { ) fecham com seus pares exatos de fechamento em ordem last-in-first-out.

Exemplo de entrada malformada

{
  'service': "auth",
  "active": true,
}

Exemplo de saída

Line 2, Column 3:
  'service': "auth",
  ^
Error: Single quotes are not allowed in JSON. Use double quotes (").
Recommendation: Replace single quotes with double quotes.

Quais opções e casos-limite o Validar JSON suporta?

Referência técnica e opções
ParâmetroTipoPadrãoComportamento e casos-limite
TRAILING_COMMAErro de SintaxeProibidoVírgula final antes de } ou ]. Embora válido em JavaScript/JSON5, viola a Seção 4 da RFC 8259.
SINGLE_QUOTESErro de SintaxeProibidoAspas simples (') envolvendo strings ou chaves de propriedade. O JSON requer aspas duplas padrão do ASCII (").
UNQUOTED_KEYErro de SintaxeProibidoIdentificadores de propriedade de objeto sem aspas duplas (por exemplo, { name: 'value' }).
MISSING_COMMAErro de SintaxeProibidoPares chave-valor de objeto consecutivos ou membros de array sem um delimitador de vírgula intermediário.
MISMATCHED_BRACKETErro de EstruturaProibidoDelimitadores de contêiner incompatíveis, como fechar um array com uma chave de fechamento ( ] vs } ).
SMART_QUOTESErro de CodificaçãoDetectadoAspas tipográficas de processador de texto (“ ”). Diagnosticado automaticamente com localização de coluna e correção.
BOM (Byte Order Mark)Erro de Codificação0xFEFFMarca de ordem de bytes UTF-8 inicial, proibida pela Seção 8.1 da RFC 8259 em trocas de rede.
NAN_INFINITY_REJECTEDGramática de NúmeroProibidoNaN, Infinity e -Infinity não são tokens numéricos JSON válidos sob a Seção 6 da RFC 8259.

Perguntas frequentes

Por que sintaxe de objeto JavaScript válida falha na validação de JSON?

JSON (RFC 8259) é um formato de intercâmbio, não uma linguagem de programação. Recursos permitidos em JavaScript — como vírgulas finais, strings com aspas simples, chaves de propriedade sem aspas, comentários e valores NaN — são explicitamente proibidos pelo padrão JSON para garantir interoperabilidade entre parsers de Python, Go, Java, C++ e Rust.

O que o ponteiro de circunflexo indica?

O circunflexo (^) aponta diretamente para a coluna do caractere em que o parser léxico encontrou um caractere inesperado ou uma sequência ilegal, ajudando você a localizar a quebra exata de sintaxe mesmo em payloads de vários megabytes.

Como o validador detecta aspas curvas?

Quando o texto é copiado de ferramentas de documentação, posts de blog ou clientes de e-mail, as aspas duplas ASCII (") são frequentemente convertidas em aspas curvas tipográficas (Unicode U+201C e U+201D). O validador detecta explicitamente esses pontos de código Unicode e recomenda substituí-los por aspas duplas padrão.

Por que o JSON rejeita comentários?

Douglas Crockford removeu os comentários da especificação original de JSON de propósito, para impedir que parsers carregassem diretivas de processamento ou pragmas, garantindo que o JSON permanecesse puramente um formato de intercâmbio de dados. Para arquivos de configuração com suporte a comentários, use JSONC.

Como chaves duplicadas são tratadas sob o RFC 8259?

O RFC 8259 especifica que chaves de objeto devem ser únicas. Enquanto alguns parsers nativos sobrescrevem silenciosamente valores anteriores com os posteriores, o ToolsByUs destaca chaves duplicadas com avisos de diagnóstico para prevenir bugs sutis de perda de dados.

O payload que eu valido é enviado a algum backend?

Não. Parse, verificação de tokens e validação acontecem 100% no lado do cliente, dentro do seu navegador. Nenhum dado sai do seu computador, garantido pela nossa arquitetura sem backend.