Capítulo 1.3: Formato JSON
Tiempo de estudio: 35 minutos
1. JSON: El lenguaje de la comunicación espacial
Imagine que una sonda espacial y el Centro de Control de la Misión (MCC) hablan diferentes idiomas. JSON (JavaScript Object Notation) es un lenguaje de datos universal, comprensible tanto para humanos como para máquinas. ¡Como el idioma internacional de los astronautas!
Propiedades principales:
- 🪶 Ligero: transmisión rápida incluso con señal débil
- 👀 Legible por humanos: la estructura es visible a simple vista
- 🔄 Universal: compatible con todos los lenguajes de programación
💡 Analogía espacial:
JSON es como un telegrama digital con datos sobre las estrellas. En lugar de código Morse, estructuras claras
{clave: valor}
.
2. Anatomía de un mensaje JSON
JSON se compone de dos tipos de estructuras:
A. Objetos (Naves espaciales)
B. Arrays (Cúmulos estelares)
[
{"name": "Sirius", "magnitude": -1.46},
{"name": "Canopus", "magnitude": -0.74},
{"name": "Arcturus", "magnitude": -0.05}
]
⚡ Reglas de sintaxis:
- Claves entre comillas
" "
- Valores: cadenas de texto, números, booleanos (
true
/false
),null
- Datos separados por comas
- Llaves
{}
para objetos, corchetes[]
para arrays
3. JSON vs XML: Batalla de formatos
Parámetro | JSON (Satélite moderno) | XML (Telescopio antiguo) |
---|---|---|
Legibilidad | Alta (acceso directo a campos) | Baja (etiquetas <planet>...</planet> ) |
Tamaño | Compacto | Voluminoso (+30% al tamaño) |
Procesamiento | Rápido | Lento |
Ejemplo | {"planet": "Mars"} |
<planet>Mars</planet> |
🔭 ¿Por qué JSON ganó en el espacio?
Las APIs de la NASA, SpaceX y la ESA usan JSON, ¡es ideal para la transmisión de datos!
4. Trabajo con JSON en código
Ejemplo Python (obtener datos de la Luna):
import requests
import json
# Usamos una API real, por ejemplo, para obtener datos del Sistema Solar
# от The Solar System OpenData API
try:
response = requests.get("https://api.le-systeme-solaire.net/rest/bodies/terre")
response.raise_for_status() # Comprueba errores HTTP (4xx, 5xx)
planet_data = response.json()
print(f"Nombre: {planet_data['englishName']}")
print(f"Satélites: {[moon['moon'] for moon in planet_data['moons']]}")
# Conversión de un diccionario Python a una cadena JSON para guardar
planet_json_str = json.dumps(planet_data, indent=2, ensure_ascii=False) # ensure_ascii=False para cirílico
print("\n--- JSON Formateado ---")
print(planet_json_str)
except requests.exceptions.RequestException as e:
print(f"Error de solicitud: {e}")
Ejemplo JavaScript (procesamiento de datos del telescopio):
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. Validación JSON: Comprobación de la "señal"
Antes de usar los datos, asegúrese de que el JSON:
-
Tenga la estructura correcta (¡verifique los corchetes/llaves!)
-
Contenga los campos esperados
-
No tenga errores de sintaxis
Herramientas: - JSONLint (como un detector de basura espacial para JSON) - Analizadores sintácticos de lenguaje integrados (lanzarán un error si el formato es incorrecto)
⚠️ Ejemplo de error:
{"planet": "Mars"
→ ¡Falta la llave de cierre!Solución: Siempre use
json.loads()
en Python oJSON.parse()
en JS para verificar.
Cuestionario de repaso
🚀 Resumen del capítulo:
JSON es el "esperanto espacial" del mundo de las APIs. Conociendo su estructura, podrás:
-
📡 Recibir datos de telescopios y sondas
-
🔧 Convertir información entre sistemas
-
🛰️ Guardar datos científicos en archivos
¡Prepárense para el acoplamiento! En el próximo capítulo, exploraremos la arquitectura REST API, el sistema de control de la "estación espacial" de tu servidor.
📌 Práctica: ¡Visite NASA Open APIs, encuentre la API de asteroides (Asteroids NeoWs) y estudie la estructura JSON en la respuesta!