Pular para o conteúdo
Aback Tools Logo

Como Validar JSON Online: Sintaxe, Esquema e Erros Comuns

Como validar JSON online: o que significa JSON válido segundo a RFC 8259, validadores locais no navegador, verificação com JSON Schema, os cinco erros mais comuns e suas correções, e validação programática em JS, Python e CI.

DH
Tutorials & How-Tos13 min de leitura2,800 palavras

Validar JSON é a primeira coisa que você deve fazer sempre que o JSON sai de um sistema e entra em outro: antes de chegar à sua API, antes de ser armazenado em um banco de dados, antes de ser processado por um script. JSON inválido não produz um erro útil; produz uma falha de análise frequentemente atribuída ao componente errado. Este guia cobre todos os métodos práticos para validar JSON online e offline, explica o que "JSON válido" realmente significa e mostra como diagnosticar e corrigir os erros mais comuns.

< 1sTempo de validação onlineSem necessidade de instalação
0 KBDados enviadosRoda inteiramente no navegador
5Erros de JSON mais comunsTodos capturados por um validador

O que significa realmente "JSON válido"?

JSON (JavaScript Object Notation) tem uma especificação formal definida pela RFC 8259 e pelo padrão ECMA-404. Um documento JSON é válido quando se conforma completamente a essa especificação — nem mais, nem menos. As regras são mais rigorosas do que a maioria espera, e várias coisas que o JavaScript permite são explicitamente proibidas no JSON.

As regras da especificação JSON

  • Strings devem usar aspas duplas - strings com aspas simples (`'value'`) não são JSON válido, mesmo que o JavaScript as aceite.
  • Sem vírgulas finais - `[1, 2, 3,]` e `{"a": 1,}` são inválidos; a vírgula após o último elemento deve ser removida.
  • Sem comentários - `// comentários de linha` e `/* comentários de bloco */` não fazem parte da especificação JSON.
  • Sem valores undefined - `undefined` é um conceito do JavaScript; o JSON só permite `null`, números, strings, booleanos, arrays e objetos.
  • Números não podem ter zeros à esquerda - `012` não é JSON válido; use `12`.
  • Chaves de objeto devem ser strings - `{1: "value"}` é inválido; as chaves devem ser strings entre aspas duplas.
  • Sem caracteres de controle em strings - quebras de linha, tabulações e outros caracteres de controle brutos devem ser escapados (`\n`, `\t`, etc.).

Note

JSON5 e JSONC (JSON com Comentários) são superconjuntos flexíveis de JSON muito populares que permitem comentários, vírgulas finais e aspas simples. Se sua ferramenta produz esses formatos, um validador JSON padrão os rejeitará - use um parser JSON5 ou JSONC, ou remova as extensões antes de validar.

Sintaticamente válido vs. semanticamente válido

Um documento JSON pode ser sintaticamente válido (corretamente formado conforme a especificação) mas semanticamente inválido para sua aplicação. Por exemplo, um objeto JSON com "age" definido como -5 é JSON válido, mas uma idade inválida para um perfil de usuário. A validação de sintaxe é o que um parser JSON verifica; a validação de esquema é o que captura erros semânticos. Ambas as camadas importam, e este guia cobre as duas.

Como validar JSON online em segundos

A forma mais rápida de verificar se uma string JSON é válida é colá-la em um validador JSON online. Sem instalação, sem configuração, sem conta. O resultado é instantâneo e - quando você usa uma ferramenta baseada em navegador - seus dados nunca saem do seu dispositivo.

Um texto JSON é um valor serializado. Note que certas especificações anteriores do JSON restringiam um texto JSON a ser um objeto ou um array.

- Especificação JSON, RFC 8259

Usando o Formatador e Validador de JSON

O Formatador e Validador de JSON da Aback Tools valida e formata JSON simultaneamente. Cole qualquer string JSON e ele informa imediatamente se a entrada é válida. Se for inválida, a ferramenta destaca a posição do erro com um número de linha e uma descrição em linguagem simples do que deu errado. Se for válida, ela gera JSON limpo e indentado que você pode copiar direto para o seu projeto.

Essa abordagem de dupla finalidade importa na prática. Quando você recebe JSON de uma API, copia de um arquivo de configuração ou extrai de uma linha de log, o texto bruto costuma estar minificado e difícil de ler. Formatar como parte da validação dá duas coisas ao mesmo tempo: a confirmação de que o JSON é válido e uma versão legível que você realmente pode inspecionar.

Tip

Se você só precisa de uma resposta sim/não - isso é JSON válido? - cole seu payload e olhe o indicador de status no topo do painel de saída. Um selo verde de "JSON válido" significa que o parser aceitou a entrada sem erros. Um indicador vermelho significa que algo está errado, e os detalhes do erro dirão exatamente o quê.

Formatador e Validador de JSON

Cole qualquer string JSON para validar, imprimir bonito e destacar a sintaxe instantaneamente no seu navegador - com diagnósticos de erro em nível de linha e sem uploads.

Open tool

Erros comuns de JSON e como corrigi-los

A maioria dos documentos JSON inválidos falha por uma de cinco razões. Conhecer esses padrões permite corrigir erros rapidamente sem depender inteiramente de uma ferramenta para diagnosticá-los.

1

Vírgula final

Vírgulas finais são o erro JSON mais comum, em grande parte porque o JavaScript e a maioria das linguagens modernas as permitem em literais de objeto e array. O JSON não. Remova a vírgula após a última propriedade de cada objeto e o último elemento de cada array.

Vírgula final - inválido vs válido
json
// ❌ Inválido - vírgula após a última propriedade
{
  "name": "Alice",
  "age": 30,
}

// ✓ Válido - sem vírgula final
{
  "name": "Alice",
  "age": 30
}
2

Strings com aspas simples

Aspas simples são válidas em JavaScript, mas explicitamente proibidas no JSON. Toda string - tanto chaves quanto valores - deve usar aspas duplas. Esse erro é comum quando o JSON é escrito à mão ou copiado de um literal de objeto JavaScript.

Aspas simples - inválido vs válido
json
// ❌ Inválido - chave e valor com aspas simples
{'city': 'London'}

// ✓ Válido - chave e valor com aspas duplas
{"city": "London"}
3

Comentários no JSON

JSON não tem sintaxe de comentários. Se seu JSON contém comentários `//` ou `/* */` - frequentemente adicionados a arquivos de configuração como documentação - um parser JSON padrão rejeitará o documento inteiro. Remova todos os comentários antes de analisar, ou migre para um formato como JSONC ou JSON5 que os suporte nativamente.

Comentários - JSON inválido
json
// ❌ Inválido - comentários não fazem parte da especificação JSON
{
  // Este é o objeto de usuário
  "name": "Alice",
  "role": "admin" /* permissões elevadas */
}
4

Caracteres especiais sem escape em strings

Quebras de linha brutas, tabulações, barras invertidas e certos caracteres de controle Unicode devem ser escapados dentro de strings JSON. Uma quebra de linha bruta dentro de um valor de string - ao contrário da sequência de escape `\n` - torna o JSON não analisável. Esse erro aparece com frequência quando o JSON é gerado concatenando strings no código em vez de usar um serializador JSON adequado.

Caracteres sem escape - inválido vs válido
json
// ❌ Inválido - quebra de linha bruta dentro do valor
{"message": "line one
line two"}

// ✓ Válido - quebra de linha escapada
{"message": "line one\nline two"}
5

Chaves ou colchetes desencontrados

Uma chave não fechada, um colchete não fechado ou um delimitador de fechamento desencontrado causa falha de análise. É comum em JSON editado à mão e em JSON gerado por código que monta payloads via concatenação de strings. Um formatador com pareamento de delimitadores os torna visíveis imediatamente.

Delimitadores desencontrados - inválido vs válido
json
// ❌ Inválido - array aberto mas objeto fechado
{
  "items": [1, 2, 3
}

// ✓ Válido - delimitadores pareados
{
  "items": [1, 2, 3]
}

Detector de Chaves Duplicadas em JSON

Detecta chaves de objeto repetidas em qualquer payload JSON - sobrescritas silenciosas por chaves duplicadas são válidas segundo alguns parsers, mas causam perda de dados e bugs difíceis de diagnosticar.

Open tool

Validação com JSON Schema: verificar valores, não só sintaxe

A validação de sintaxe confirma que o JSON está bem formado. A validação de esquema confirma que o JSON contém os dados certos - os campos certos, os tipos certos, as faixas de valores certas. São duas verificações distintas, e ambas são necessárias em sistemas de produção.

O que é JSON Schema?

JSON Schema é um vocabulário para descrever a estrutura e as restrições de um documento JSON. Um documento de esquema especifica quais campos são obrigatórios, que tipo cada campo deve ter, valores mínimos e máximos para números, padrões de string permitidos e mais. Ao validar um documento JSON contra um esquema, você recebe erros precisos como "o campo 'email' é obrigatório" ou "o campo 'age' deve ser um inteiro positivo" - não apenas "JSON inválido".

Usando o Validador de JSON Schema

O Validador de JSON Schema da Aback Tools aceita um payload JSON e um JSON Schema e valida o payload contra as restrições do esquema. Ele reporta erros em nível de regra com o caminho de campo exato que falhou - assim você sabe não apenas que a validação falhou, mas qual campo violou qual regra. É a ferramenta certa quando você precisa verificar se uma resposta de API atende a um contrato, ou se um arquivo de configuração contém todas as definições obrigatórias.

Note

Se você tem um payload JSON mas ainda não tem esquema, o [Gerador de JSON Schema](/tools/data/converters/json-schema-generator) infere automaticamente um esquema Draft-07 ou Draft 2020-12 a partir do seu payload. Ele detecta tipos, campos obrigatórios, formatos de string (email, data, URI) e estruturas de objetos aninhados. Use o esquema gerado como ponto de partida e refine-o com restrições adicionais.

Validação de sintaxe vs. validação de esquema

AspectoValidação de sintaxeValidação de esquema
O que verificaConformidade com a especificação JSONTipos de dados, campos, restrições
Ferramenta necessáriaQualquer parser JSONValidador de JSON Schema
Saída de erroPosição de linha/caractereCaminho de campo + regra violada
CapturaAspas ausentes, vírgulas erradasTipo errado, campo ausente
Quando usarSempre - primeira checagemQuando existe um contrato
Aprovar = garantiaAnalisável por qualquer biblioteca JSONCorresponde ao seu modelo de dados

Gerar um esquema a partir de um payload existente

A forma mais rápida de adicionar validação de esquema a um projeto existente é gerar o esquema a partir de um payload sabidamente bom. Cole um objeto JSON representativo no Gerador de JSON Schema e ele produzirá um esquema completo com definições de tipos, campos obrigatórios e dicas de formato. Copie a saída para o seu projeto e use-a como contrato de validação para todos os payloads futuros desse tipo.

Validar JSON programaticamente

Ferramentas online são a escolha mais rápida para checagens pontuais, mas sistemas de produção precisam de validação JSON embutida no código. Cada grande linguagem de programação tem pelo menos uma biblioteca de análise JSON bem mantida, e a maioria também tem bibliotecas dedicadas de validação de esquemas.

JavaScript e TypeScript

Em JavaScript, `JSON.parse()` lança um `SyntaxError` quando recebe JSON inválido - envolva-o em um try/catch para tratar o erro com elegância. Para validação de esquema, AJV (Another JSON Validator) é a biblioteca mais usada, com suporte a JSON Schema Draft-07 até Draft 2020-12 e alto desempenho. Zod é uma alternativa popular orientada a TypeScript que valida JSON contra esquemas de tipos em tempo de execução com inferência completa de TypeScript. O conversor de JSON para Esquema Zod da Aback Tools gera um esquema Zod a partir de qualquer payload JSON automaticamente.

Validação de sintaxe em TypeScript
typescript
function isValidJson(input: string): boolean {
  try {
    JSON.parse(input);
    return true;
  } catch {
    return false;
  }
}

// Or get the parsed value and the error together:
function parseJson<T>(input: string): { data: T } | { error: string } {
  try {
    return { data: JSON.parse(input) as T };
  } catch (e) {
    return { error: (e as SyntaxError).message };
  }
}

Python

O módulo `json` embutido do Python lança `json.JSONDecodeError` (uma subclasse de `ValueError`) quando a análise falha. O objeto de erro inclui o número da linha, a coluna e uma descrição. Para validação de esquema, jsonschema e pydantic são as escolhas padrão - pydantic é particularmente popular em projetos FastAPI porque valida e desserializa JSON em objetos Python tipados em uma única etapa.

Validação de sintaxe em Python
python
import json

def is_valid_json(text: str) -> bool:
    try:
        json.loads(text)
        return True
    except json.JSONDecodeError as e:
        print(f"Invalid JSON at line {e.lineno}, col {e.colno}: {e.msg}")
        return False

Linha de comando

Em qualquer sistema com Python instalado, `python3 -m json.tool input.json` valida e imprime bonito um arquivo JSON em um único comando. O código de saída é diferente de zero em caso de falha, tornando-o adequado para scripts de shell e pipelines de CI. A ferramenta `jq` é uma alternativa mais poderosa: `jq . input.json` valida e formata, enquanto `jq 'empty' input.json` valida sem produzir saída.

Validação rápida de JSON pela linha de comando
bash
# Validate and pretty-print with Python (built-in, no install)
python3 -m json.tool input.json

# Validate silently with jq (exit code 0 = valid, 1 = invalid)
jq empty input.json && echo "Valid" || echo "Invalid"

# Validate multiple files with a loop
for f in *.json; do
  jq empty "$f" && echo "$f: valid" || echo "$f: INVALID"
done

Tip

Em pipelines de CI, use `jq empty` em vez de `python3 -m json.tool` para validar JSON. `jq` é mais rápido em arquivos grandes, não produz saída em caso de sucesso (mantendo os logs limpos) e retorna um código de saída significativo sobre o qual seu sistema de CI pode agir sem lógica adicional.

Validar formatos JSON especiais

A validação JSON padrão cobre arquivos `.json` e payloads de API. Mas o JSON aparece em vários outros formatos que têm seus próprios requisitos de validação - formatos em que um parser JSON padrão produz resultados incorretos ou rejeita toda a entrada.

JSONL e NDJSON (JSON Lines)

Arquivos JSON Lines (`.jsonl`) contêm um objeto JSON por linha, sem array delimitador. Esse formato é padrão para arquivos de log, conjuntos de dados de ML e APIs de streaming. Um parser JSON padrão rejeita um arquivo JSONL porque o arquivo como um todo não é um documento JSON válido - cada linha deve ser analisada individualmente. O Validador e Corretor de JSON Lines valida cada linha separadamente, informa quais números de linha têm erros e oferece correções automáticas seguras para problemas de formatação comuns.

JSON com chaves duplicadas

A especificação JSON tecnicamente permite chaves duplicadas em objetos, mas o comportamento é indefinido - parsers diferentes o tratam de forma diferente. O `json.loads()` do Python mantém o último valor; alguns parsers mantêm o primeiro; outros lançam um erro. Na prática, chaves duplicadas são quase sempre um bug - uma mesclagem malfeita ou um erro de template. O Detector de Chaves Duplicadas em JSON encontra todas as chaves repetidas e diz exatamente onde ocorrem.

JSON em arquivos de configuração YAML

YAML é um superconjunto de JSON, então qualquer JSON válido também é YAML válido. Mas JSON embutido em arquivos YAML - como valor de um campo de string, por exemplo - precisa de sua própria validação. Se você trabalha com configs YAML que contêm valores JSON embutidos, valide as porções JSON separadamente com o formatador JSON e depois valide o YAML geral com um validador YAML. Se seu projeto usa ambos os formatos e você precisa comparar dois arquivos de configuração, o Destacador de Diferenças JSON/YAML trata ambos simultaneamente.

Warning

Nunca use um parser YAML como substituto de um validador JSON. YAML permite construções que não são JSON válido - o fato de o YAML aceitar sua entrada não confirma que o JSON está em conformidade com a especificação. Use um parser específico de JSON para validar JSON, mesmo quando o JSON estiver embutido em um arquivo YAML.

Boas práticas de validação de JSON

Validar JSON uma vez antes de uma operação importante é bom. Construir validação em todos os pontos onde o JSON entra ou sai do seu sistema é melhor. Essas práticas se aplicam tanto se você está construindo uma API, processando pipelines de dados ou gerenciando arquivos de configuração.

Valide na ingestão, não no consumo

O momento certo de validar JSON é quando ele entra pela primeira vez no seu sistema - na fronteira da API, no manipulador de upload de arquivos, no consumidor da fila de mensagens. Validar no consumo (na função que lê um valor no fundo do seu código) significa que dados inválidos se propagam mais longe antes de falhar, tornando o erro mais difícil de rastrear. Valide cedo e rejeite a entrada inválida no ponto de entrada.

Use um esquema, não apenas uma checagem de sintaxe

Validação de sintaxe é o mínimo exigível. Em qualquer sistema em que o JSON transporta dados críticos para o negócio - registros de usuários, payloads de pagamento, valores de configuração - um esquema adiciona uma segunda camada que captura tipos errados, campos obrigatórios ausentes e valores fora da faixa que a validação de sintaxe não consegue detectar. Gere seu esquema inicial a partir de um payload sabidamente bom com o Gerador de JSON Schema e refine-o conforme seu modelo de dados evolui.

Trate erros de validação explicitamente

Uma chamada a `JSON.parse()` envolta em um try/catch que engole o erro e retorna null é pior do que nenhuma validação - ela esconde o problema. Quando a validação de JSON falha, registre o erro com a fonte de entrada, a mensagem de erro exata e contexto suficiente para reproduzir o problema. Retorne um erro significativo ao chamador em vez de um resultado vazio que cause um erro secundário em outro lugar.

  • Registre a entrada bruta - quando a validação de JSON falha em produção, a entrada bruta é o artefato de depuração mais valioso. Registre uma versão truncada (primeiros 500 caracteres) junto com o erro.
  • Inclua o contexto de origem - anote de onde veio o JSON: qual endpoint da API, qual arquivo, qual mensagem da fila. Isso transforma um erro genérico de análise em um incidente acionável.
  • Configure alertas para falhas de análise - um pico de erros de validação JSON costuma sinalizar uma mudança incompatível em uma API upstream ou um deploy que introduziu um bug de serialização.
  • Teste com entradas inválidas - inclua JSON inválido (vírgula final, aspa ausente, tipo errado) na sua suíte de testes para confirmar que seu tratamento de erros se comporta corretamente.

Tip

Ao trabalhar com respostas de APIs de terceiros, valide sempre antes de processar - mesmo para APIs em que confia. Provedores de API mudam a forma das respostas, adicionam campos novos e introduzem mudanças incompatíveis. Um validador de esquemas com esquemas versionados dá a você um aviso antecipado de mudanças de contrato antes que causem falhas silenciosas a jusante.

Validador de JSON Schema

Valide qualquer payload JSON contra um JSON Schema e receba diagnósticos de erro em nível de regra com caminhos de campo exatos - sem instalação, sem uploads.

Open tool

Key takeaways

  • JSON válido segue estritamente a RFC 8259: apenas strings entre aspas duplas, sem vírgulas finais, sem comentários, sem `undefined` e sem caracteres de controle sem escape.
  • O Formatador e Validador de JSON valida e formata JSON simultaneamente, com diagnósticos de erro em nível de linha executados inteiramente no seu navegador.
  • Os cinco erros de JSON mais comuns são: vírgulas finais, strings com aspas simples, comentários, caracteres de controle sem escape e delimitadores desencontrados - todos capturados instantaneamente por um validador.
  • A validação de sintaxe confirma a analisabilidade; a validação com JSON Schema confirma que seus dados atendem ao contrato esperado - ambas as verificações servem a propósitos diferentes.
  • Use `JSON.parse()` em um try/catch para validação em código; use `jq empty` para checagens rápidas de CLI em pipelines de CI.
  • Formatos especiais como JSONL, JSON com chaves duplicadas e JSON embutido em YAML exigem validadores específicos do formato em vez de um parser JSON padrão.
  • Valide o JSON na ingestão, não no consumo - rejeite dados inválidos no ponto de entrada antes que eles se propaguem pelo seu sistema.

Perguntas frequentes

The fastest method is to paste the string into the JSON Formatter & Validator on Aback Tools - it reports valid or invalid in under a second with no setup. In code, use JSON.parse() wrapped in a try/catch in JavaScript, or json.loads() in a try/except in Python. Both throw an exception on invalid input and return the parsed object on success. For command-line checks, `jq empty input.json` exits with code 0 on valid JSON and code 1 on invalid.

Trailing commas are the single most common JSON error. They appear after the last property in an object or the last element in an array: `{"name": "Alice",}` or `[1, 2, 3,]`. JSON does not allow trailing commas even though JavaScript, Python, and most other languages do. The second most common error is single-quoted strings - JSON requires double quotes for both keys and values.

No. The JSON specification (RFC 8259) explicitly excludes comments. Both `//` line comments and `/* */` block comments are invalid in standard JSON. If you need JSON with comments, consider JSONC (used by VS Code config files) or JSON5, both of which are relaxed supersets. When using these formats, make sure your parser explicitly supports them - a standard JSON parser will reject the file.

Syntax validation checks whether the JSON is well-formed per the RFC 8259 specification - parseable by any standard JSON library. Schema validation checks whether the data inside the JSON conforms to a contract: required fields, correct types, value ranges, string formats. A JSON document can be syntactically valid but semantically wrong - for example, `{"age": "thirty"}` is valid JSON but fails a schema that requires age to be a number.

If your JSON.parse() call appears to succeed but returns null, the input string itself is the JSON text `null` - which is perfectly valid JSON. The value `null` is one of the six JSON value types. If you expected an object or array, the input may have been a null literal rather than a missing or empty string. Wrap JSON.parse() in a function that also checks `typeof result !== "object" || result === null` if you specifically need an object.

A JSONL file contains one JSON object per line and is not a valid JSON document on its own - a standard JSON parser rejects it because the file as a whole does not match the JSON grammar. Use the JSON Lines Validator & Fixer on Aback Tools, which validates each line individually and reports which line numbers have parse errors. For CLI validation, `jq empty < input.jsonl` also works by reading each line as a separate JSON value.

The JSON specification says behavior is undefined when an object contains duplicate keys - it does not explicitly forbid them, but different parsers handle them differently. Python keeps the last value, some parsers keep the first, and others throw an error. In practice, duplicate keys are almost always a bug. Use the JSON Duplicate Key Detector on Aback Tools to scan any payload for repeated keys before it causes a silent data-loss issue in your application.

The simplest option is `jq empty filename.json` - it exits with code 0 on valid JSON and code 1 on invalid, with no output on success. For schema validation in CI, use AJV CLI (`ajv validate -s schema.json -d data.json`) or write a short script using Python's jsonschema library. Both integrate cleanly with GitHub Actions, GitLab CI, and other systems that block on non-zero exit codes. Run validation as an early step before any processing to catch issues at the source.

ShareXLinkedIn