JavaScript: JSON em JavaScript
Última atualização: 2026-10-13
JSON (JavaScript Object Notation) é um formato leve de troca de dados. Pense nele como uma caixa de envio padronizada — não importa o que você coloca dentro, a embalagem segue uma especificação universal para que o destinatário saiba exatamente como abrir. Comunicação front-end/back-end, arquivos de configuração, armazenamento local — JSON está em todo lugar.
1. Regras de Sintaxe do JSON
JSON se parece muito com um objeto literal JS, mas as regras são mais rígidas:
| Regra | Descrição |
|---|---|
| Chaves devem usar aspas duplas | "nome" ✅ nome ❌ 'nome' ❌ |
| Valores string devem usar aspas duplas | "olá" ✅ 'olá' ❌ |
| Sem vírgulas finais | {"a":1,} ❌ |
| Tipos de valor limitados | string, número, booleano, null, objeto, array |
| Não permitido | undefined, funções, comentários |
JSON
{
"nome": "Alice",
"idade": 25,
"habilidades": ["HTML", "CSS", "JS"],
"endereco": {
"cidade": "São Paulo",
"cep": "01001-000"
},
"ativo": true,
"conjuge": null
}
⚠️ Nota: Sem aspas simples no JSON! O erro mais comum de iniciante é escrever
'chave' ou 'valor' — isso é válido em JS mas ilegal em JSON.
JSON.stringify() converte um valor JS em uma string JSON — serialização.
HTML
<script>
JSON.stringify(valor)
JSON.stringify(valor, substituidor)
JSON.stringify(valor, substituidor, espaco)
</script>
| Parâmetro | Descrição |
|---|---|
valor |
O valor a serializar |
substituidor |
Filtrar ou transformar — uma função ou array |
espaco |
Indentação — número ou string, para formatação bonita |
▶ Exemplo: Serialização e Formatação
▶ Experimente💡 Dica: Nota:
undefined, funções e Symbols são ignorados durante a serialização (propriedades desaparecem de objetos, viram null em arrays). Objetos Date são convertidos para strings ISO.
3. JSON.parse()
JSON.parse() converte uma string JSON de volta em um valor JS — desserialização.
HTML
<script>
JSON.parse(texto)
JSON.parse(texto, recuperador)
</script>
| Parâmetro | Descrição |
|---|---|
texto |
A string JSON |
recuperador |
Uma função de transformação aplicada a cada par chave-valor |
▶ Exemplo: Desserialização
▶ Experimente4. JSON vs Objeto JS
| Comparação | JSON | Objeto JS |
|---|---|---|
| Natureza | String (texto) | Estrutura de dados em memória |
| Aspas nas chaves | Aspas duplas obrigatórias | Omitíveis (para identificadores válidos) |
| Tipos de valor | Limitados (6 tipos) | Qualquer tipo |
| Vírgulas finais | Não permitidas | Permitidas |
| Comentários | Não permitidos | Suportados (via ferramentas) |
💡 Dica: Maneira fácil de lembrar: JSON é "uma versão em string de objetos JS com validação rigorosa." Não é um objeto — é texto. Você precisa de
parse para transformá-lo em um objeto com o qual pode trabalhar.
▶ Exemplo: Erros Comuns de JSON
▶ Experimente💡 Dica: Os três erros de JSON mais comuns: aspas simples, vírgulas finais e
undefined. Ao depurar problemas de JSON, cole no console do navegador com JSON.parse() — a mensagem de erro indicará o local exato.
❓ Perguntas Frequentes
P Por que
JSON.stringify(NaN) retorna null?R A especificação JSON não tem
NaN, Infinity ou -Infinity — todos viram null durante a serialização. Se precisar preservar esses valores, use uma função substituidor personalizada.P
JSON.parse consegue fazer parse de literais de objeto JS?R Não.
JSON.parse('{}') funciona, mas JSON.parse('{a:1}') lança um erro — a chave falta aspas duplas. A sintaxe JSON é mais rigorosa que literais de objeto JS.P É possível escrever comentários em JSON?
R JSON padrão não suporta comentários. Se necessário, use um campo como
"_comentario": "descricao" como alternativa, embora isso não seja uma convenção formal.📖 Resumo
- JSON é um formato de dados baseado em string — chaves devem ter aspas duplas, sem vírgulas finais, tipos de valor limitados
JSON.stringify()serializa,JSON.parse()desserializa — são operações inversasundefined, funções e Symbols são ignorados ou viramnulldurante a serialização- O parâmetro
espacoemJSON.stringifytorna a saída legível; o parâmetrosubstituidorfiltra campos - Fazer parse de JSON inválido lança uma exceção — sempre envolva em
try/catch
📝 Exercícios
- Básico: Crie um array de 3 objetos de alunos e formate a saída com
JSON.stringify(indentação de 2 espaços). - Intermediário: Escreva uma função
parseSeguro(str)que envolvaJSON.parseemtry/catch, retornando o resultado em caso de sucesso ounullcom mensagem de erro em caso de falha. - Desafio: Construa um "bloco de notas local" — use
promptpara entrada, salve nolocalStoragecomJSON.stringify, e carregue/exiba ao carregar a página comJSON.parse.