# 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.

- Endereço oficial: https://pradev.com.br/validador-json
- Categoria: JSON, dados e formatadores
- Tipo: Validador
- Atualizado em: 2026-09-30
- Autor: Leonardo Gaertner (https://pradev.com.br/sobre)
- Preço: grátis, sem cadastro. O processamento acontece no navegador de quem usa.

## Como usar

1. Cole o JSON no campo (ou clique em Colar).
2. Veja o resultado logo abaixo: válido ou com o erro e a posição dele.
3. 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

```text
{'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
```

## 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.

```javascript
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 };
  }
}
```

_JavaScript_

```python
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)}
```

_Python. Recusa NaN e Infinity, que o Python aceitaria._

```php
<?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()];
    }
}
```

_PHP_

## 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.

## Fontes

- [RFC 8259: o formato JSON](https://www.rfc-editor.org/rfc/rfc8259)

## Guias

- [Como formatar e validar JSON em JavaScript, Python e PHP](https://pradev.com.br/guias/como-formatar-e-validar-json): Como deixar JSON legível e descobrir o erro de um JSON inválido em JavaScript, Python e PHP, com os erros mais comuns e as diferenças entre as linguagens.

## Ferramentas relacionadas

- [Formatador JSON](https://pradev.com.br/formatador-json): Formate, indente, minifique e valide JSON online. Mostra a linha e a coluna do erro. Grátis, e o que você cola não sai do navegador.
- [Minificador JSON](https://pradev.com.br/minificador-json): Minifique JSON online: remove espaços e quebras de linha e mostra quantos bytes você economizou. Grátis, direto no navegador.
- [Decodificador JWT](https://pradev.com.br/decodificador-jwt): Decodifique um JWT online e veja header, payload e datas de exp, iat e nbf. O token não sai do navegador. Não verifica a assinatura.
- [Conversor de Timestamp Unix](https://pradev.com.br/timestamp-converter): Converta timestamp Unix (segundos ou milissegundos) em data e hora, e data em timestamp. Grátis, com o seu fuso horário e em UTC.
- [Testador de Regex](https://pradev.com.br/regex-tester): Teste expressões regulares online: destaque dos casamentos, grupos e flags. Usa o motor do JavaScript. Grátis, direto no navegador.
- [Comparador JSON](https://pradev.com.br/comparador-json): Compare dois JSON online e veja o caminho de cada chave adicionada, removida ou alterada. A ordem das chaves não conta. Grátis.
