📝 Exercícios Práticos
Coloca em prática o que aprendeste! Validação de JSON, quizzes e desafios de código em PHP e JavaScript.
📊 O Teu Progresso
0/5 módulos visitados
📋 Quizzes de JSON
Qual das seguintes opções é um JSON válido?
Quais são os tipos de dados válidos em JSON? (Seleciona todos os corretos)
O que representa o seguinte JSON?
{
"alunos": [
{ "nome": "Ana", "nota": 18 },
{ "nome": "Bruno", "nota": 15 }
]
}
Qual é uma diferença importante entre JSON e XML?
O que está errado neste JSON?
{
"nome": "Maria",
'idade': 25,
"ativo": true
}
O que retorna o seguinte código PHP?
$dados = ["nome" => "Ana", "idade" => 30];
echo json_encode($dados);
O que acontece se executares JSON.parse('{"a":1}') em JavaScript?
✓ Validador JSON
Cola o teu JSON aqui para verificar se está correto e formatá-lo.
O resultado aparecerá aqui...
JSON válido deve usar aspas duplas em todas as chaves e strings. Números, booleanos e null não levam aspas.
📝 Exemplos para Testar
✓ JSON Válido
{
"produto": "Laptop",
"preco": 999.99,
"disponivel": true,
"categorias": ["tecnologia", "computadores"]
}
✓ JSON Válido (Array)
[
{ "id": 1, "nome": "Ana" },
{ "id": 2, "nome": "Bruno" },
{ "id": 3, "nome": "Carla" }
]
✗ JSON Inválido (aspas simples)
{
'nome': 'Erro',
'valor': 100
}
✗ JSON Inválido (vírgula extra)
{
"nome": "Erro",
"valor": 100,
}
🐘 Exercícios PHP
Escreve código PHP que converta o seguinte array para JSON:
$utilizador = [
"nome" => "João",
"email" => "joao@email.pt",
"ativo" => true
];
$utilizador = [
"nome" => "João",
"email" => "joao@email.pt",
"ativo" => true
];
$json = json_encode($utilizador);
echo $json;
// Resultado: {"nome":"João","email":"joao@email.pt","ativo":true}
Como converter este JSON para um array PHP e aceder ao nome?
$json = '{"produto":"Laptop","preco":999.99}';
$json = '{"produto":"Laptop","preco":999.99}';
// Converter para array associativo
$dados = json_decode($json, true);
// Aceder aos valores
echo $dados['produto']; // Laptop
echo $dados['preco']; // 999.99
Como codificar JSON com caracteres especiais (ç, ã, é) corretamente?
$dados = [
"nome" => "José Gonçalves",
"cidade" => "São Paulo",
"descrição" => "Coração do Brasil"
];
// Usar JSON_UNESCAPED_UNICODE para manter caracteres
$json = json_encode($dados, JSON_UNESCAPED_UNICODE);
echo $json;
// {"nome":"José Gonçalves","cidade":"São Paulo","descrição":"Coração do Brasil"}
// Sem a flag:
$json_escaped = json_encode($dados);
// {"nome":"Jos\u00e9 Gon\u00e7alves","cidade":"S\u00e3o Paulo",...}
Como ler e processar um ficheiro JSON em PHP?
// Ler ficheiro JSON
$caminho = 'dados/config.json';
$json_string = file_get_contents($caminho);
// Decodificar
$dados = json_decode($json_string, true);
// Verificar erros
if (json_last_error() !== JSON_ERROR_NONE) {
echo "Erro ao decodificar JSON: " . json_last_error_msg();
} else {
print_r($dados);
}
Como consumir uma API REST que retorna JSON?
// Consumir API REST
$url = 'https://api.exemplo.com/utilizadores/1';
// Método com file_get_contents
$json = file_get_contents($url);
$dados = json_decode($json, true);
// Método com cURL (mais robusto)
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer token123'
]);
$resposta = curl_exec($ch);
curl_close($ch);
$dados = json_decode($resposta, true);
echo "Nome: " . $dados['nome'];
📜 Exercícios JavaScript
Converte o seguinte objeto JavaScript para JSON:
const produto = {
nome: "Telemóvel",
preco: 599.99,
emStock: true
};
const produto = {
nome: "Telemóvel",
preco: 599.99,
emStock: true
};
const json = JSON.stringify(produto);
console.log(json);
// {"nome":"Telemóvel","preco":599.99,"emStock":true}
// Com formatação bonita
const jsonFormatado = JSON.stringify(produto, null, 2);
console.log(jsonFormatado);
Como converter esta string JSON para um objeto e aceder às propriedades?
const json = '{"cidade":"Porto","populacao":250000}';
const json = '{"cidade":"Porto","populacao":250000}';
// Converter para objeto
const dados = JSON.parse(json);
// Aceder às propriedades
console.log(dados.cidade); // Porto
console.log(dados.populacao); // 250000
// Com tratamento de erro
try {
const dados = JSON.parse(json);
console.log(dados.cidade);
} catch (erro) {
console.error("JSON inválido:", erro.message);
}
Como usar fetch para obter dados JSON de uma API?
// Fetch com async/await
async function obterUtilizadores() {
try {
const resposta = await fetch('https://api.exemplo.com/utilizadores');
if (!resposta.ok) {
throw new Error('Erro na resposta');
}
const dados = await resposta.json();
console.log(dados);
return dados;
} catch (erro) {
console.error('Erro:', erro);
}
}
// Fetch com .then()
fetch('https://api.exemplo.com/utilizadores')
.then(resposta => resposta.json())
.then(dados => console.log(dados))
.catch(erro => console.error('Erro:', erro));
Como guardar e recuperar objetos no localStorage?
// Guardar objeto no localStorage
const utilizador = {
nome: "Ana",
preferencias: {
tema: "escuro",
idioma: "pt-PT"
}
};
// Converter para JSON e guardar
localStorage.setItem('utilizador', JSON.stringify(utilizador));
// Recuperar do localStorage
const json = localStorage.getItem('utilizador');
const dados = JSON.parse(json);
console.log(dados.nome); // Ana
console.log(dados.preferencias.tema); // escuro
// Remover
localStorage.removeItem('utilizador');
// Limpar tudo
localStorage.clear();
Como enviar dados JSON para uma API com POST?
// Enviar dados com POST
async function criarUtilizador(dados) {
try {
const resposta = await fetch('https://api.exemplo.com/utilizadores', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer token123'
},
body: JSON.stringify(dados)
});
if (!resposta.ok) {
throw new Error('Erro ao criar utilizador');
}
const novoUtilizador = await resposta.json();
console.log('Criado:', novoUtilizador);
return novoUtilizador;
} catch (erro) {
console.error('Erro:', erro);
}
}
// Usar a função
criarUtilizador({
nome: "Maria Silva",
email: "maria@email.pt"
});
Como filtrar e transformar dados de um array JSON?
const json = `[
{"id": 1, "nome": "Ana", "ativo": true},
{"id": 2, "nome": "Bruno", "ativo": false},
{"id": 3, "nome": "Carla", "ativo": true}
]`;
const utilizadores = JSON.parse(json);
// Filtrar utilizadores ativos
const ativos = utilizadores.filter(u => u.ativo);
console.log(ativos);
// [{id: 1, nome: "Ana", ativo: true}, {id: 3, nome: "Carla", ativo: true}]
// Mapear para apenas nomes
const nomes = utilizadores.map(u => u.nome);
console.log(nomes);
// ["Ana", "Bruno", "Carla"]
// Encontrar por ID
const utilizador = utilizadores.find(u => u.id === 2);
console.log(utilizador);
// {id: 2, nome: "Bruno", ativo: false}
// Ordenar por nome
const ordenados = [...utilizadores].sort((a, b) =>
a.nome.localeCompare(b.nome)
);