0Pricing
Python Academy · Lección

Gestión de estructuras JSON anidadas

Navegue por objetos JSON complejos y transfórmelos.

Gestión de estructuras JSON anidadas es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.

Introducción

El JSON del mundo real está profundamente anidado. Saber recorrer, transformar y validar estructuras anidadas es esencial.

Acceso a claves anidadas

data['user']['address']['city'] recorre diccionarios anidados. Use .get() en cada nivel para gestionar las claves que falten.
import json
data = {'user': {'address': {'city': 'NYC', 'zip': '10001'}}}
print(data['user']['address']['city'])

Acceso seguro a datos anidados

data.get('user', {}).get('address', {}).get('city') encadena llamadas a .get() de forma segura.
data = {'user': {'name': 'Alice'}}
city = data.get('user', {}).get('address', {}).get('city', 'unknown')
print(city)

Iteración sobre arrays de objetos

Los arrays JSON de objetos son listas de diccionarios. Recórralos con un bucle for.
import json
data = json.loads('[{"name":"Alice"},{"name":"Bob"}]')
for user in data:
    print(user['name'])

Aplanado de JSON anidado

Escriba una función recursiva para aplanar diccionarios anidados en un diccionario plano con claves separadas por puntos.
def flatten(d, prefix=''):
    result = {}
    for k, v in d.items():
        key = f'{prefix}.{k}' if prefix else k
        if isinstance(v, dict):
            result.update(flatten(v, key))
        else:
            result[key] = v
    return result
print(flatten({'a': {'b': {'c': 1}}, 'd': 2}))

Filtrado de arrays

[user for user in data if user.get('active')] filtra un array JSON según una condición.
data = [{'name':'A','active':True},{'name':'B','active':False}]
active = [u for u in data if u.get('active')]
print(active)

Transformación de datos anidados

Extraiga un campo de cada objeto anidado: [item['name'] for item in data]
data = [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}]
names = [d['name'] for d in data]
print(names)

Validación de esquemas con jsonschema

pip install jsonschema. jsonschema.validate(instance, schema) genera ValidationError cuando los datos no son válidos.
# from jsonschema import validate
# schema = {'type':'object','required':['name']}
# validate({'name':'Alice'}, schema)  # OK
# validate({}, schema)  # raises ValidationError
print('schema validation demo')

Actualización profunda de diccionarios anidados

dict.update() solo realiza una combinación superficial y no combina diccionarios anidados. Escriba una función recursiva deep_update para combinar estructuras anidadas.
def deep_update(base, override):
    for k, v in override.items():
        if isinstance(v, dict) and isinstance(base.get(k), dict):
            deep_update(base[k], v)
        else:
            base[k] = v
    return base
result = deep_update({'a': {'x': 1}}, {'a': {'y': 2}})
print(result)

Consultas al estilo de jq con Python

Para consultas complejas, utilice la biblioteca jq o una búsqueda recursiva personalizada: find_all(data, 'key').
def find_all(obj, key):
    if isinstance(obj, dict):
        if key in obj: yield obj[key]
        for v in obj.values(): yield from find_all(v, key)
    elif isinstance(obj, list):
        for item in obj: yield from find_all(item, key)
data = {'a': {'name': 'x'}, 'b': [{'name': 'y'}]}
print(list(find_all(data, 'name')))

Serialización a NDJSON

JSON delimitado por saltos de línea (NDJSON): un objeto JSON por línea. Escriba con json.dumps(obj) + '\n'.
import json
objects = [{'id': 1}, {'id': 2}, {'id': 3}]
ndjson = '\n'.join(json.dumps(o) for o in objects)
print(ndjson)

Comprobación rápida

¿Qué devuelve data.get('key', {}).get('nested') cuando falta 'key'?

Resumen

JSON anidado: encadene .get() para acceder de forma segura. Recorra los arrays con for. Aplánelos mediante recursión. Filtre con una comprensión de listas. Use jsonschema para la validación.

Continúe

¡Siga así! Pase a la lección siguiente.

Preguntas frecuentes

¿La lección «Gestión de estructuras JSON anidadas» es gratis?

Sí — el texto completo de «Gestión de estructuras JSON anidadas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Gestión de estructuras JSON anidadas»?

Navegue por objetos JSON complejos y transfórmelos. Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Python Academy?

No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Gestión de estructuras JSON anidadas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Python Academy?

Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Codificación y decodificación de JSON
  2. Gestión de estructuras JSON anidadas
  3. Lectura de CSV con csv.reader
  4. Escritura de CSV con csv.DictWriter
← Volver a Python Academy