Capítulo 1.3: Formato JSON
Tempo de estudo: 35 minutos
1. JSON: A Linguagem da Comunicação Espacial
Imagine que uma sonda espacial e o Centro de Controle da Missão falem idiomas diferentes. JSON (JavaScript Object Notation) é uma linguagem de dados universal, compreendida por humanos e máquinas. Como a linguagem internacional dos astronautas!
Principais propriedades:
- 🪶 Leve: transmissão rápida mesmo com sinal fraco
- 👀 Legível por humanos: a estrutura é visível a olho nu
- 🔄 Universal: suportado por todas as linguagens de programação
💡 Analogia Espacial:
JSON é como um telegrama digital com dados sobre estrelas. Em vez de código Morse, estruturas claras
{chave: valor}
.
2. Anatomia de uma Mensagem JSON
JSON consiste em dois tipos de estruturas:
A. Objetos (Naves Espaciais)
B. Arrays (Aglomerados Estelares)
[
{"name": "Sirius", "magnitude": -1.46},
{"name": "Canopus", "magnitude": -0.74},
{"name": "Arcturus", "magnitude": -0.05}
]
⚡ Regras de sintaxe:
- Chaves entre aspas
" "
- Valores: strings, números, booleanos (
true
/false
),null
- Dados separados por vírgulas
- Chaves
{}
para objetos, colchetes[]
para arrays
3. JSON vs XML: A Batalha dos Formatos
Parâmetro | JSON (Satélite Moderno) | XML (Telescópio Antigo) |
---|---|---|
Legibilidade | Alta (acesso direto aos campos) | Baixa (tags <planet>...</planet> ) |
Tamanho | Compacto | Volumoso (+30% ao tamanho) |
Processamento | Rápido | Lento |
Exemplo | {"planet": "Mars"} |
<planet>Mars</planet> |
🔭 Por que JSON venceu no espaço?
APIs da NASA, SpaceX e ESA usam JSON — é ideal para transmissão de dados!
4. Trabalhando com JSON em Código
Exemplo Python (obtendo dados sobre a Lua):
import requests
import json
# Usamos uma API real, por exemplo, para obter dados do Sistema Solar
# da The Solar System OpenData API
try:
response = requests.get("https://api.le-systeme-solaire.net/rest/bodies/terre")
response.raise_for_status() # Verifica por erros HTTP (4xx, 5xx)
planet_data = response.json()
print(f"Nome: {planet_data['englishName']}")
print(f"Luas: {[moon['moon'] for moon in planet_data['moons']]}")
# Converte o dicionário Python em uma string JSON para salvar
planet_json_str = json.dumps(planet_data, indent=2, ensure_ascii=False) # ensure_ascii=False para caracteres cirílicos
print("\n--- JSON Formatado ---")
print(planet_json_str)
except requests.exceptions.RequestException as e:
print(f"Erro na requisição: {e}")
Exemplo JavaScript (processamento de dados do telescópio):
const Data = `{
"id": "terre",
"name": "La Terre",
"englishName": "Earth",
"isPlanet": true,
"moons": [
{
"moon": "La Lune",
"rel": "https://api.le-systeme-solaire.net/rest/bodies/lune"
}
],
"semimajorAxis": 149598023,
"perihelion": 147095000,
"aphelion": 152100000,
"eccentricity": 0.0167,
"inclination": 0,
"mass": {
"massValue": 5.97237,
"massExponent": 24
},
"vol": {
"volValue": 1.08321,
"volExponent": 12
},
"density": 5.5136,
"gravity": 9.8,
"escape": 11190,
"meanRadius": 6371.0084,
"equaRadius": 6378.1366,
"polarRadius": 6356.8,
"flattening": 0.00335,
"dimension": "",
"sideralOrbit": 365.256,
"sideralRotation": 23.9345,
"aroundPlanet": null,
"discoveredBy": "",
"discoveryDate": "",
"alternativeName": "",
"axialTilt": 23.4393,
"avgTemp": 288,
"mainAnomaly": 358.617,
"argPeriapsis": 85.901,
"longAscNode": 18.272,
"bodyType": "Planet"
}`;
const dataObj = JSON.parse(Data);
console.log(dataObj.target);
5. Validação JSON: Verificando o "Sinal"
Antes de usar os dados, certifique-se de que o JSON:
-
Tem a estrutura correta (verifique os parênteses/chaves!)
-
Contém os campos esperados
-
Não possui erros de sintaxe
Ferramentas: - JSONLint (como um detector de lixo espacial para JSON) - Parsers de linguagem integrados (irão lançar um erro se o formato estiver incorreto)
⚠️ Exemplo de erro:
{"planet": "Mars"
→ Sem chave de fechamento!Solução: Sempre use
json.loads()
no Python ouJSON.parse()
no JS para verificação.
Quiz para fixação
🚀 Resumo do capítulo:
JSON é o "Esperanto espacial" do mundo das APIs. Conhecendo sua estrutura, você será capaz de:
-
📡 Receber dados de telescópios e sondas
-
🔧 Converter informações entre sistemas
-
🛰️ Salvar dados científicos em arquivos
Prepare-se para a acoplagem! No próximo capítulo, exploraremos a arquitetura REST API — o sistema de gerenciamento da "estação espacial" do seu servidor.
📌 Prática: Acesse NASA Open APIs, encontre a API de asteroides (Asteroids NeoWs) e estude a estrutura JSON na resposta!