Contenido del curso
Encapsulación y Comportamiento de Objetos
Implementar Protocolos con Métodos Especiales
Relaciones entre Clases y Polimorfismo
- 12

Book Search and Lending Flow in Python OOP
08:57 min - 13

Clases abstractas en Python con ABC y @abstractmethod
04:31 min - 14

Decoradores property en Python para atributos con validación
06:22 min - 15

Decoradores @staticmethod y @classmethod en Python
07:18 min - 16

Serialización de objetos Python a JSON para persistencia de datos
Viendo ahora
Diseño Avanzado y Patrones de Software
Serialización de objetos Python a JSON para persistencia de datos




Todos los cursos GRATIS
Resumen
La persistencia de datos en Python te permite que una aplicación recuerde su estado entre ejecuciones. Aquí verás cómo serializar objetos a JSON, escribirlos en un archivo y preparar todo para, más adelante, reconstruirlos al cargar. Con una clase central, Persistencia, lograrás guardar nombre, usuarios, libros y una fecha de guardado para auditar cambios.
¿Cómo implementar persistencia de datos con JSON en Python?
La idea clave: convertir objetos Python a formato JSON serializable, escribirlos en un archivo y, en una fase posterior, cargarlos para reconstruir el estado. Es vital manejar errores y validar datos para evitar inconsistencias.
- Serializa estructuras a JSON para almacenamiento seguro.
- Usa archivos .json para persistir entre ejecuciones.
- Prioriza validación y manejo de errores.
¿Qué estructura mínima necesita la clase Persistencia?
Crea un archivo persistencia.py y define una clase que reciba el nombre del archivo. Por defecto, será biblioteca.json. Así centralizas el acceso al almacenamiento.
import json class Persistencia: def __init__(self, archivo="biblioteca.json"): self.archivo = archivo
- Constructor con valor por defecto: biblioteca.json.
- Un único punto de entrada para guardar datos.
¿Cómo escribir el archivo con with open y json.dump?
El context manager with garantiza que el archivo se cierre correctamente. El modo "w" (write) escribe desde cero y el encoding "utf-8" asegura caracteres como eñes y tildes.
def guardar_datos(self, biblioteca): datos = {} datos["nombre"] = biblioteca.nombre with open(self.archivo, "w", encoding="utf-8") as f: json.dump(datos, f, indent=2, ensure_ascii=False)
- Usa with open(..., "w", encoding="utf-8") as f.
- json.dump admite indent para legibilidad.
- ensure_ascii=False conserva caracteres en español.
¿Cómo guardar usuarios, libros y fecha de guardado?
Además del nombre, es útil persistir las listas de usuarios y libros. Para colecciones de objetos, conviene convertir cada elemento a diccionario, por ejemplo con dict().
¿Cómo convertir objetos a diccionarios con dict?
Aprovecha una lista comprimida para transformar cada elemento de biblioteca.usuarios y biblioteca.libros.
datos = { "nombre": biblioteca.nombre, "usuarios": [dict(usuario) for usuario in biblioteca.usuarios], "libros": [dict(libro) for libro in biblioteca.libros], }
- Lista comprimida para recorrer colecciones.
- Conversión con dict() para serializar a JSON.
¿Cómo registrar la fecha de guardado?
Agregar una marca de tiempo te permite saber cuándo se persistió el estado, útil para auditoría y recargas futuras.
# Ejemplo conceptual según lo explicado: # from DateTime import DateTime # datos["fecha_guardado"] = DateTime.now().ISOFormat()
- Campo fecha_guardado para trazabilidad.
- Sello temporal en ISO format con now.
¿Qué errores y buenas prácticas debes considerar?
Mantén consistencia en nombres de atributos y el idioma del código. Un error típico fue usar biblioteca.name cuando el atributo real era biblioteca.nombre. Evita mezclar idiomas en variables; si eliges español, sé consistente, aunque se recomienda inglés en proyectos reales para evitar tildes en identificadores.
- Verifica atributos: biblioteca.nombre en lugar de name.
- Usa UTF-8 y ensure_ascii=False para textos en español.
- Valida datos y maneja errores al serializar y escribir.
- Comprueba resultados: tras ejecutar, se genera biblioteca.json con el contenido esperado.
- Ejemplos prácticos: cambio de nombre "Platzi Biblioteca" a "B2" y verificación en el .json.
¿Te gustaría que incluyamos la carga desde JSON para reconstruir el estado en tu sistema de biblioteca? Deja tus dudas o casos y continuamos la conversación.