Python Advanced Series — JSON Avanzado

10. Aplanamiento de JSON anidados

10. Flattening Nested JSON

Convierte respuestas complejas de APIs modernas, que tienen múltiples niveles de profundidad, en tablas planas estructuradas.

Convert complex modern API responses with multiple depth levels into structured flat tables.

⚠️ Advertencia de ciberseguridad y producción ⚠️ Cybersecurity and production warning

Este ejercicio es solo para aprendizaje y pruebas. No ejecutes scripts contra datos reales, ambientes de producción, APIs externas, portales con login, datos sensibles, sistemas críticos o repositorios empresariales sin autorización, respaldos, pruebas previas, permisos mínimos, control de cambios y cumplimiento de los protocolos de ciberseguridad de tu organización.

This exercise is for learning and testing only. Do not run scripts against real data, production environments, external APIs, login portals, sensitive data, critical systems, or enterprise repositories without authorization, backups, prior testing, least-privilege permissions, change control, and compliance with your organization's cybersecurity protocols.

Objetivo del ejercicio

Exercise objective

Usar pandas.json_normalize para convertir objetos JSON anidados en columnas tabulares listas para análisis o exportación.

Use pandas.json_normalize to convert nested JSON objects into tabular columns ready for analysis or export.

Datos sintéticos

Synthetic data

iduser.nombreuser.area
1AlexIT
2MariaFinance

Ejemplo base

Base example

import pandas as pd

api_data = [{"id": 1, "user": {"nombre": "Alex", "area": "IT"}}]
df = pd.json_normalize(api_data)
# Genera columna: user.area | Generates column: user.area

Resultado esperado

Expected result

iduser.nombreuser.area
1AlexIT
2MariaFinance

Script completo

Complete script

# ==========================================================
# Python Advanced Topic 10
# Flattening Nested JSON
# ==========================================================

import pandas as pd

api_data = [
    {"id": 1, "user": {"nombre": "Alex", "area": "IT"}, "status": "active"},
    {"id": 2, "user": {"nombre": "Maria", "area": "Finance"}, "status": "active"},
    {"id": 3, "user": {"nombre": "John", "area": "HR"}, "status": "inactive"}
]

# Flatten nested JSON into columns
df = pd.json_normalize(api_data)

# Clean column names for CSV / database use
df.columns = [c.replace(".", "_") for c in df.columns]

df.to_csv("flattened_api_data.csv", index=False)
print(df)

Salida esperada en consola

Expected console output

   id    status user_nombre user_area
0   1    active        Alex       IT
1   2    active       Maria  Finance
2   3  inactive        John       HR

Aplicaciones reales

Real-world applications

  • Convertir respuestas API en CSV.
  • Preparar JSON para SQL o Power BI.
  • Aplanar objetos de usuarios, órdenes o tickets.
  • Estandarizar integraciones con múltiples niveles.
  • Convert API responses into CSV.
  • Prepare JSON for SQL or Power BI.
  • Flatten user, order, or ticket objects.
  • Standardize multi-level integrations.

Recomendaciones

Recommendations

  • Revisar columnas generadas antes de cargar a SQL.
  • Controlar campos faltantes entre respuestas.
  • Mantener nombres de columnas consistentes.
  • Guardar una copia del JSON original para auditoría.
  • Review generated columns before loading into SQL.
  • Handle missing fields across responses.
  • Keep column names consistent.
  • Keep a copy of the original JSON for audit.

Valor del tópico

Topic value

El aplanamiento de JSON convierte datos semiestructurados en tablas limpias, haciendo posible analizarlos con herramientas tradicionales.

JSON flattening turns semi-structured data into clean tables, making it possible to analyze with traditional tools.