1. Ejercicio 01: Leer y analizar un archivo JSON

1.1. Enunciado

Dado un archivo JSON llamado libros.json, que contiene una lista de libros con sus respectivos títulos, autores y años de publicación, escribe un programa que cargue los datos, los muestre en formato legible y cuente cuántos libros fueron publicados después del año 2000.

Archivo de ejemplo (libros.json):

[
    {"titulo": "Cien años de soledad", "autor": "Gabriel García Márquez", "año": 1967},
    {"titulo": "El código Da Vinci", "autor": "Dan Brown", "año": 2003},
    {"titulo": "El señor de los anillos", "autor": "J.R.R. Tolkien", "año": 1954},
    {"titulo": "Harry Potter y la piedra filosofal", "autor": "J.K. Rowling", "año": 1997},
    {"titulo": "Los juegos del hambre", "autor": "Suzanne Collins", "año": 2008}
]

1.2. Solución

src/01.py

1.3. Explicaciones


2. Ejercicio 02: Actualizar un archivo JSON

2.1. Enunciado

Dado un archivo JSON llamado empleados.json que contiene una lista de empleados con sus nombres y salarios, escribe un programa que aumente el salario de cada empleado en un 10% y guarde el archivo actualizado.

Archivo de ejemplo (empleados.json):

[
    {"nombre": "Juan Pérez", "salario": 3500},
    {"nombre": "Ana Gómez", "salario": 4200},
    {"nombre": "Luis Rodríguez", "salario": 2800},
    {"nombre": "María Fernández", "salario": 3900}
]

2.2. Solución

src/02.py

2.3. Explicaciones


3. Ejercicio 03: Filtrar datos de un archivo JSON

3.1. Enunciado

Dado un archivo JSON llamado productos.json que contiene una lista de productos con sus nombres, precios y cantidades, escribe un programa que filtre y muestre solo los productos que tienen un precio mayor a 50.

Archivo de ejemplo (productos.json):

[
    {"producto": "Teclado", "precio": 30, "cantidad": 100},
    {"producto": "Monitor", "precio": 120, "cantidad": 50},
    {"producto": "Ratón", "precio": 25, "cantidad": 200},
    {"producto": "Impresora", "precio": 80, "cantidad": 30},
    {"producto": "Portátil", "precio": 600, "cantidad": 15}
]

3.2. Solución

src/03.py

3.3. Explicaciones


4. Ejercicio 04: Convertir un diccionario de Python a JSON y guardarlo en un archivo

4.1. Enunciado

Crea un diccionario en Python que contenga la información de varios estudiantes (nombre, edad y calificación) y conviértelo a formato JSON. Guarda los datos en un archivo llamado estudiantes.json.

4.2. Solución

src/04.py

4.3. Explicaciones


5. Ejercicio 05: Validar un archivo JSON

5.1. Enunciado

Escribe un programa que intente cargar un archivo JSON llamado configuracion.json. Si el archivo no contiene un JSON válido, el programa debe detectar el error y mostrar un mensaje adecuado.

Archivo de ejemplo (configuracion.json):

{
    "version": "1.0",
    "modo": "producción",
    "puerto": 8080
}

5.2. Solución

src/05.py

5.3. Explicaciones


5. Ejercicio 06: Convertir JSON a un diccionario de Python y modificarlo

5.1. Enunciado

Dado un string en formato JSON que contiene la información de una persona, escribe un programa que lo convierta a un diccionario de Python, añada una nueva clave “email”, y luego convierta el diccionario de vuelta a JSON.

String JSON de ejemplo:

json_string = '{"nombre": "Carlos", "edad": 25, "ciudad": "Madrid"}'

5.2. Solución

src/06.py

5.3. Explicaciones


5. Ejercicio 07: Manipular datos JSON anidados

5.1. Enunciado

Dado el siguiente archivo JSON que contiene datos anidados sobre departamentos y empleados (departamentos.json), escribe un programa que extraiga los nombres de todos los empleados que trabajen en el departamento de “Desarrollo”.

Archivo de ejemplo (departamentos.json):

{
    "departamentos": [
        {
            "nombre": "Recursos Humanos",
            "empleados": [
                {"nombre": "Juan Pérez"},
                {"nombre": "Ana Gómez"}
            ]
        },
        {
            "nombre": "Desarrollo",
            "empleados": [
                {"nombre": "Luis Rodríguez"},
                {"nombre": "Sofía Torres"}
            ]
        },
        {
            "nombre": "Ventas",
            "empleados": [
                {"nombre": "Carlos Sánchez"}
            ]
        }
    ]
}

5.2. Solución

src/07.py

5.3. Explicaciones