Saltar al contenido principal

Clase 00 — Introducción a JSON

JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos. Es fácil de leer para humanos y fácil de parsear para máquinas.

¿Dónde se usa JSON?

ContextoUso
APIs RESTFormato estándar de request/response
Configuracionespackage.json, tsconfig.json, .eslintrc.json
Terraformterraform.tfstate, outputs
AWS CLISalida por defecto, políticas IAM
Dockerdocker inspect, manifiestos
KubernetesAlternativa a YAML (kubectl get -o json)
Bases de datosMongoDB, PostgreSQL (jsonb), DynamoDB
CI/CDArtefactos, matrices en GitHub Actions

JSON vs YAML vs XML

// JSON
{
"nombre": "RoxsRoss",
"rol": "DevOps Engineer",
"habilidades": ["Docker", "Kubernetes", "Terraform"]
}
# YAML
nombre: RoxsRoss
rol: DevOps Engineer
habilidades:
- Docker
- Kubernetes
- Terraform
CaracterísticaJSONYAMLXML
LegibilidadMediaAltaBaja
VerbosidadMediaBajaAlta
Comentarios❌ No✅ Sí✅ Sí
Soporte nativo en JS✅ Sí❌ No❌ No
APIs REST⭐ EstándarRaroLegacy

Reglas básicas de JSON

1. Todo es pares clave-valor dentro de llaves {}

{
"clave": "valor"
}

2. Las claves SIEMPRE van entre comillas dobles

{
"nombre": "correcto"
}

3. Valores válidos

  • String: "texto"
  • Number: 42, 3.14, -5, 1.5e+3
  • Boolean: true, false
  • Null: null
  • Object: { }
  • Array: [ ]

4. No se permiten comentarios

// ❌ Esto NO es JSON válido
{
"nombre": "valor" // Esto tampoco
}

Nota: VS Code soporta .jsonc (JSON with Comments) para archivos como settings.json y tsconfig.json.

5. No se permite coma trailing

// ❌ INCORRECTO
{
"nombre": "valor",
"edad": 30,
}

// ✅ CORRECTO
{
"nombre": "valor",
"edad": 30
}

Tu primer archivo JSON

{
"nombre": "RoxsRoss",
"edad": 30,
"rol": "DevOps Engineer",
"activo": true,
"empresa": null,
"habilidades": ["Docker", "Kubernetes", "Terraform", "Bash", "Python"],
"redes": {
"github": "roxsross",
"twitter": "@roxsross",
"linkedin": "roxsross"
}
}

Validar JSON

# Con jq (instalar: brew install jq / apt install jq)
jq . mi-perfil.json
jq empty mi-perfil.json && echo "✅ Válido" || echo "❌ Inválido"

# Con Python (viene preinstalado)
python3 -m json.tool mi-perfil.json

# Formatear (pretty print)
echo '{"nombre":"RoxsRoss","edad":30}' | jq .

# Minificar (una línea)
echo '{"nombre":"RoxsRoss","edad":30}' | jq -c .

Ejemplo: JSON en la vida real

package.json (Node.js)

{
"name": "mi-api",
"version": "1.0.0",
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"test": "jest"
},
"dependencies": {
"express": "^4.18.2",
"cors": "^2.8.5"
}
}

Respuesta de una API REST

{
"status": 200,
"message": "success",
"data": {
"id": 25,
"name": "pikachu",
"types": ["electric"],
"stats": {
"hp": 35,
"attack": 55,
"defense": 40,
"speed": 90
}
}
}