41. Guardando y recuperando un JSON
Crea dos funciones: una para "guardar" datos en formato JSON (es decir, convertir una estructura de datos Python a una cadena JSON) y otra para "recuperar" datos (convertir una cadena JSON a una estructura de datos Python).
La función de guardar (serializar_json) aceptará una estructura de datos Python (diccionario o lista) y devolverá su representación JSON como una cadena. La función de recuperar (deserializar_json) aceptará una cadena JSON y devolverá la estructura de datos Python correspondiente.
import json # Aunque se pida sin librerías, para los tests de ejemplo es útil.
# El reto es implementarlo "manualmente" o con un mínimo de librerías.
def serializar_json(data) -> str:
# Tu código aquí (simula la conversión a JSON string)
pass
def deserializar_json(json_string: str):
# Tu código aquí (simula la conversión de JSON string a Python dict/list)
pass
datos_ejemplo = {
"nombre": "Andros",
"edad": 30,
"es_programador": True,
"habilidades": ["Python", "JavaScript", "C++"],
"direccion": {
"calle": "Calle Falsa 123",
"ciudad": "Valencia"
}
}
json_serializado = serializar_json(datos_ejemplo)
# Ejemplo: '{"nombre": "Andros", "edad": 30, "es_programador": true, "habilidades": ["Python", "JavaScript", "C++"], "direccion": {"calle": "Calle Falsa 123", "ciudad": "Valencia"}}'
datos_recuperados = deserializar_json(json_serializado)
# Ejemplo: {'nombre': 'Andros', 'edad': 30, 'es_programador': True, 'habilidades': ['Python', 'JavaScript', 'C++'], 'direccion': {'calle': 'Calle Falsa 123', 'ciudad': 'Valencia'}}
Ratoncito
Implementa las funciones para serializar y deserializar diccionarios y listas que contengan tipos de datos básicos (strings, números, booleanos, None).
Dragón
Extiende las funciones para manejar objetos anidados (diccionarios dentro de diccionarios, listas dentro de listas, etc.). Considera cómo manejar tipos de datos complejos (como objetos de clases personalizadas) si fuera necesario, o simplemente explica por qué no podrían ser serializados directamente. Restricción adicional para el nivel: Intenta no usar la librería json directamente en la implementación, sino simular su lógica con recursión.
Las siguientes actividades de "Datos estructurados" (Insertar nuevas filas, Actualizar una fila, Eliminar una fila, Consulta) simulan operaciones CRUD (Create, Read, Update, Delete) en una "base de datos" simple representada como una lista de diccionarios.
Para mantener la inmutabilidad, cada función deberá devolver una nueva lista de registros con la operación aplicada, sin modificar la lista original.
Aquí te proporciono la base para la "base de datos" y los capítulos siguientes:
# Para los siguientes desafíos de "Datos estructurados"
# Usaremos esta estructura de datos simple como "base de datos":
# Una lista de diccionarios, donde cada diccionario es un "registro" o "fila".
# El "id" será un campo clave.
registros_ejemplo = [
{"id": 1, "nombre": "Alice", "edad": 30, "ciudad": "Nueva York"},
{"id": 2, "nombre": "Bob", "edad": 24, "ciudad": "Londres"},
{"id": 3, "nombre": "Charlie", "edad": 35, "ciudad": "París"}
]
Este trabajo está bajo una licencia Attribution-NonCommercial-NoDerivatives 4.0 International.
Apóyame en Ko-fi