O que é JSON?
JSON (JavaScript Object Notation) é um formato leve de troca de dados, fácil de ler e escrever por humanos, e simples de interpretar por máquinas. É usado principalmente para comunicação entre sistemas.
Exemplo 1 - JSON simples
{
"nome": "Ana",
"idade": 25,
"cidade": "São Paulo"
}
Metas e Objetivos do JSON
- Ser simples de entender e escrever.
- Permitir troca de informações entre linguagens diferentes.
- Substituir formatos mais complexos, como XML.
Sintaxe do JSON
A sintaxe é baseada em pares chave: valor
,
com chaves sempre entre aspas duplas.
Exemplo válido
{
"produto": "Notebook",
"preco": 3500.90,
"estoque": true
}
Variáveis
Embora o JSON em si não tenha variáveis, podemos armazenar o JSON em variáveis JavaScript.
Exemplo
let pessoa = {
"nome": "Carlos",
"idade": 30
};
console.log(pessoa.nome); // Carlos
Objetos
Um objeto JSON é formado por pares chave: valor
.
Exemplo
{
"curso": "JavaScript",
"cargaHoraria": 40
}
Arrays
Arrays em JSON são listas de valores ordenados.
Exemplo
{
"alunos": ["Ana", "Bruno", "Carla"]
}
Objeto JSON no JavaScript
O JavaScript possui um objeto global chamado JSON
com métodos úteis para conversão.
O que é Serialização?
É o processo de converter um objeto em texto JSON. Isso permite salvar em arquivos ou enviar via rede.
O que é Parsing?
É o processo de converter uma string JSON em objeto JavaScript.
Métodos stringify e parse
Exemplo com stringify
let usuario = { nome: "João", idade: 28 };
let jsonStr = JSON.stringify(usuario);
console.log(jsonStr); // {"nome":"João","idade":28}
Exemplo com parse
let str = '{"curso":"JS","ativo":true}';
let obj = JSON.parse(str);
console.log(obj.curso); // JS
Configuração da Serialização Personalizada - toJSON
Podemos controlar como um objeto é convertido em JSON
sobrescrevendo o método toJSON
.
Exemplo
let produto = {
nome: "TV",
preco: 2500,
senhaInterna: "segredo123",
toJSON() {
// Esconde a senha na serialização
return { nome: this.nome, preco: this.preco };
}
};
let json = JSON.stringify(produto);
console.log(json); // {"nome":"TV","preco":2500}