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.
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 (como012), 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?
| Parâmetro | Tipo | Padrão | Comportamento e casos-limite |
|---|---|---|---|
| TRAILING_COMMA | Erro de Sintaxe | Proibido | Vírgula final antes de } ou ]. Embora válido em JavaScript/JSON5, viola a Seção 4 da RFC 8259. |
| SINGLE_QUOTES | Erro de Sintaxe | Proibido | Aspas simples (') envolvendo strings ou chaves de propriedade. O JSON requer aspas duplas padrão do ASCII ("). |
| UNQUOTED_KEY | Erro de Sintaxe | Proibido | Identificadores de propriedade de objeto sem aspas duplas (por exemplo, { name: 'value' }). |
| MISSING_COMMA | Erro de Sintaxe | Proibido | Pares chave-valor de objeto consecutivos ou membros de array sem um delimitador de vírgula intermediário. |
| MISMATCHED_BRACKET | Erro de Estrutura | Proibido | Delimitadores de contêiner incompatíveis, como fechar um array com uma chave de fechamento ( ] vs } ). |
| SMART_QUOTES | Erro de Codificação | Detectado | Aspas tipográficas de processador de texto (“ ”). Diagnosticado automaticamente com localização de coluna e correção. |
| BOM (Byte Order Mark) | Erro de Codificação | 0xFEFF | Marca de ordem de bytes UTF-8 inicial, proibida pela Seção 8.1 da RFC 8259 em trocas de rede. |
| NAN_INFINITY_REJECTED | Gramática de Número | Proibido | NaN, 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.