Validar JSON significa confirmar que uma string é sintaticamente correta (segue a gramática JSON) e, opcionalmente, estruturalmente correta (encaixa na forma que sua aplicação espera). Este guia mostra como validar JSON em JavaScript, Python, na linha de comando e no navegador —— e explica a diferença crucial entre validação de sintaxe e validação com schema.
Dois tipos de validação JSON
Antes de validar qualquer coisa, decida que pergunta você está realmente fazendo:
- Validação de sintaxe —— „isso é ao menos JSON válido?“ Verifica aspas, vírgulas, colchetes e tipos de valor contra a gramática JSON.
JSON.parse()faz isso. - Validação com schema —— „este JSON tem os campos, tipos e restrições certos?“ Verifica que
idé inteiro, queemailestá presente etc. Precisa de JSON Schema e de um validador como o Ajv.
A maioria das buscas „validate JSON“ se refere à validação de sintaxe —— vamos começar por aí.
Como validar JSON em JavaScript
A verificação de sintaxe mais simples e confiável é tentar fazer parse e capturar o erro. JSON.parse() lança SyntaxError em qualquer entrada inválida:
function isValidJson(text) {
try {
JSON.parse(text);
return true;
} catch {
return false;
}
}
isValidJson('{"name":"Ada"}'); // true
isValidJson("{'name':'Ada'}"); // false —— aspas simples
isValidJson('{"a":1,}'); // false —— vírgula finalSe precisar do motivo da falha, capture a mensagem de erro —— costuma incluir a posição:
function validateJson(text) {
try {
return { valid: true, value: JSON.parse(text) };
} catch (err) {
return { valid: false, error: err.message };
}
}
validateJson('{"a":1,}');
// { valid: false, error: "Expected double-quoted property name in JSON at position 7" }Não use expressões regulares para validar JSON. JSON é uma gramática recursiva e não pode ser validada corretamente com regex —— JSON.parse() é o validador canônico e já vem embutido em todo runtime JavaScript.
Como validar JSON em Python
O json.loads() do Python lança json.JSONDecodeError em entrada inválida, com linha e coluna exatas:
import json
def is_valid_json(text):
try:
json.loads(text)
return True
except json.JSONDecodeError as e:
print(f"Invalid JSON: {e.msg} at line {e.lineno} column {e.colno}")
return False
is_valid_json('{"name": "Ada"}') # True
is_valid_json('{"name": "Ada",}') # False —— vírgula finalComo validar um arquivo JSON na linha de comando
Com jq
jq sai com código diferente de zero se a entrada não for JSON válido —— ideal para scripts e CI:
# Não imprime nada e sai 0 se válido; imprime erro e sai != 0 caso contrário
jq empty data.json && echo "valid" || echo "invalid"Com Python (sem instalar nada)
python3 -m json.tool data.json > /dev/null && echo "valid"Em uma pipeline de CI
Valide todos os arquivos JSON do repo como passo pre-commit ou CI para que configuração malformada nunca chegue à produção:
# Falha o build se algum .json for inválido
find . -name '*.json' -not -path './node_modules/*' \
-exec sh -c 'jq empty "$1" || exit 255' _ {} \;Valide JSON no navegador
Para uma checagem rápida sem escrever código, cole seu JSON no validador JSON do fixjson. Ele aponta a linha e a posição exatas de qualquer erro de sintaxe enquanto você digita, e tudo roda localmente —— nada é enviado ao servidor, então é seguro para payloads sensíveis. Se o JSON está quebrado e você prefere repará-lo em vez de só sinalizar, o JSON Fix corrige automaticamente os erros comuns.
Além da sintaxe: validar estrutura com JSON Schema
Um JSON sintaticamente válido ainda pode estar errado para sua aplicação —— um campo obrigatório faltando, uma string onde se esperava um número, um valor fora de faixa. Para impor estrutura, descreva a forma esperada com JSON Schema e valide com Ajv (JavaScript) ou a biblioteca jsonschema (Python):
import Ajv from 'ajv';
const ajv = new Ajv();
const validate = ajv.compile({
type: 'object',
required: ['id', 'email'],
properties: {
id: { type: 'integer' },
email: { type: 'string' },
},
});
validate({ id: 42, email: 'a@b.com' }); // true
validate({ id: '42' }); // false —— tipo errado, sem email
// validate.errors contém os detalhesValidação com schema na linha de comando
Para checagens de CI de JSON contra schema, duas CLIs cobrem quase tudo:
# Python —— instala uma vez e valida
pip install jsonschema
jsonschema --instance data.json schema.json && echo OK
# Node —— Ajv como CLI
npm i -g ajv-cli ajv-formats
ajv validate -c ajv-formats -s schema.json -d "data.*.json"Validar JSON a cada commit (hook pre-commit)
Para impedir que JSON não validado seja commitado, conecte um hook com husky + lint-staged:
// package.json
{
"lint-staged": {
"*.json": [
"jq empty",
"ajv validate -s schemas/$name.schema.json -d"
]
}
}
# instala o hook
npx husky add .husky/pre-commit "npx lint-staged" Em projetos Python, o framework oficial pre-commit traz um hook check-json que executa json.loads em cada arquivo em stage.
Erros comuns de validação JSON
Quando a validação falha, a causa costuma ser uma destas —— cada uma tem seu guia dedicado:
- Vírgulas finais após o último item
- Aspas simples em vez de duplas, ou chaves sem aspas
- Erros Unexpected-token (respostas HTML,
undefined, comentários) - Unexpected end of input por JSON truncado ou sem fechar
- „[object Object] is not valid JSON“ quando um objeto é stringificado antes do parse
Perguntas frequentes
Como verifico que uma string é JSON válido?
Passe-a para JSON.parse() dentro de try/catch (JavaScript) ou json.loads() dentro de try/except (Python). Se não lançar, é válido. Para verificar sem código, use um validador no navegador.
Posso validar JSON com uma expressão regular?
Não. JSON é uma gramática recursiva que não pode ser expressa em regex. Sempre use um parser de verdade como JSON.parse().
Qual a diferença entre validar e fazer parse de JSON?
Parse converte o texto em um valor utilizável; validar apenas confirma que ele poderia ser parseado. Na prática, um parse bem-sucedido é a validação —— é a mesma operação, você só descarta o resultado quando só interessa a validade.
Como valido JSON contra um schema?
Use JSON Schema com Ajv (JavaScript) ou a biblioteca jsonschema (Python). A validação com schema verifica tipos, campos obrigatórios e restrições —— não apenas a sintaxe.
Valide JSON agora —— sem instalação
Cole seu JSON no validador JSON para ver erros de sintaxe ao vivo, com a linha e posição exatas destacadas. Tudo roda no seu navegador; nenhum dado sai da sua máquina.
- Validador JSON —— verifique sintaxe instantaneamente no navegador
- JSON Fix —— repara JSON inválido, não só sinaliza
- O que é JSON Schema? —— valida estrutura e tipos, não apenas sintaxe
- O que é JSON? —— as regras gramaticais que tornam JSON válido ou não