Validador de JSON online
O validador de JSON confere se um texto segue a sintaxe do formato JSON e, quando não segue, mostra a mensagem de erro com a linha e a coluna. Se estiver válido, informa o tipo, a quantidade de chaves ou itens e a profundidade. Tudo roda no seu navegador: o JSON colado não é enviado a nenhum servidor.
A validação é feita no seu navegador e o JSON não é enviado a nenhum servidor.
Achou um resultado errado ou tem uma sugestão? Avise por e-mail.
Como usar
- Cole o JSON no campo (ou clique em Colar).
- Veja o resultado logo abaixo: válido ou com o erro e a posição dele.
- Corrija o ponto indicado e o resultado se atualiza sozinho a cada alteração.
Como funciona
A ferramenta lê o texto com o interpretador de JSON do próprio navegador. Se ele aceita, o JSON é válido; se recusa, a mensagem de erro é exibida e, quando o navegador informa a posição, convertida em linha e coluna.
O JSON é mais rígido que um objeto JavaScript. As chaves e os textos precisam de aspas duplas, e não são permitidos aspas simples, vírgula depois do último item, comentários, undefined, NaN e Infinity.
Esta ferramenta valida a sintaxe. Ela não confere se os campos e tipos seguem um contrato específico, o que é papel de um JSON Schema.
Erros de sintaxe mais comuns
{'nome': 'PraDev'} usa aspas simples; o certo é {"nome": "PraDev"}
{"a": 1,} tem vírgula sobrando depois do último item
{nome: "PraDev"} a chave está sem aspas
{"a": 1 "b": 2} falta uma vírgula entre os itens
Fonte: RFC 8259: o formato JSON
Em código
Para formatar e validar JSON em código, leia o texto e escreva de novo com recuo, tratando o erro de leitura. No PHP, use as opções que mantêm acentos e barras.
function formatarJSON(texto, espacos = 2) {
return JSON.stringify(JSON.parse(texto), null, espacos);
}
function validarJSON(texto) {
try {
JSON.parse(texto);
return { valido: true };
} catch (erro) {
return { valido: false, mensagem: erro.message };
}
} import json
def _recusar(nome):
raise ValueError(f"{nome} não é JSON válido")
def formatar_json(texto: str, espacos: int = 2) -> str:
# parse_constant: o Python aceitaria NaN e Infinity, que o JSON não permite
dados = json.loads(texto, parse_constant=_recusar)
return json.dumps(dados, indent=espacos, ensure_ascii=False)
def validar_json(texto: str) -> dict:
try:
json.loads(texto, parse_constant=_recusar)
return {"valido": True}
except json.JSONDecodeError as e:
return {"valido": False, "mensagem": e.msg, "linha": e.lineno, "coluna": e.colno}
except ValueError as e:
return {"valido": False, "mensagem": str(e)} Recusa NaN e Infinity, que o Python aceitaria.
<?php
function formatarJson(string $texto): string
{
$dados = json_decode($texto, false, 512, JSON_THROW_ON_ERROR);
// Sem as duas últimas opções, o PHP escreveria \u00e7 no lugar de ç
// e \/ no lugar de /
return json_encode(
$dados,
JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES
);
}
function validarJson(string $texto): array
{
try {
json_decode($texto, false, 512, JSON_THROW_ON_ERROR);
return ['valido' => true];
} catch (JsonException $e) {
return ['valido' => false, 'mensagem' => $e->getMessage()];
}
} Perguntas frequentes
Por que o meu JSON é inválido?
Os motivos mais comuns são aspas simples no lugar de duplas, vírgula depois do último item, chaves sem aspas, comentários e texto solto antes ou depois do JSON. A linha e a coluna do erro ajudam a achar o ponto exato.
JSON aceita comentários?
Não. O padrão JSON não tem comentários. Alguns programas aceitam variações como JSONC ou JSON5, mas um validador de JSON puro vai apontar erro nesses arquivos.
O validador confere se os campos estão certos?
Não. Ele confere só a sintaxe, isto é, se o texto é um JSON bem formado. Para exigir campos, tipos e valores específicos, use um JSON Schema.
O JSON que eu colo é enviado para algum servidor?
Não. A validação acontece no seu navegador e o conteúdo não é enviado nem armazenado pelo PraDev.
Outras ferramentas que podem ajudar
- Formatador JSONFormate, indente, minifique e valide JSON online
- Minificador JSONMinifique JSON online: remove espaços e quebras de linha e mostra quantos bytes você economizou
- Decodificador JWTDecodifique um JWT online e veja header, payload e datas de exp, iat e nbf
- Conversor de Timestamp UnixConverta timestamp Unix (segundos ou milissegundos) em data e hora, e data em timestamp
- Testador de RegexTeste expressões regulares online: destaque dos casamentos, grupos e flags
- Comparador JSONCompare dois JSON online e veja o caminho de cada chave adicionada, removida ou alterada