"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo hacer que mis clases de Python sean serializables en JSON?

¿Cómo puedo hacer que mis clases de Python sean serializables en JSON?

Publicado el 2024-12-21
Navegar:668

How Can I Make My Python Classes JSON Serializable?

Hacer que las clases de Python sean serializables en JSON

La serialización permite que los objetos se conviertan a un formato adecuado para la persistencia o la transferencia. La serialización de clases personalizadas en JSON a menudo resulta en un TypeError debido a su naturaleza no serializable en JSON.

Implementación de un método toJSON()

Un enfoque es crear un Método toJSON() para la clase, que maneja manualmente su serialización. Esto requiere implementar una función de serialización JSON personalizada y garantizar el manejo adecuado de los objetos anidados.

import json

class FileItem:
    def __init__(self, fname):
        self.fname = fname

    def toJSON(self):
        return json.dumps(self.__dict__)

x = FileItem('/foo/bar')
print(x.toJSON())  # Outputs: '{"fname": "/foo/bar"}'

Usando la biblioteca orjson

Para obtener una información completa solución, considere usar la biblioteca orjson, que proporciona una forma eficiente y personalizable de serializar clases personalizadas en JSON. Ofrece funciones avanzadas como aplicación de esquemas y compatibilidad con estructuras de objetos complejas.

import orjson

@orjson.dataclass
class FileItem:
    fname: str

x = FileItem('/foo/bar')
json_bytes = orjson.dumps(x)  # Returns a byte string
print(json_bytes.decode())  # Outputs: '{"fname": "/foo/bar"}'

Conclusión

Usando un toJSON() personalizado El método o la biblioteca orjson proporcionan soluciones convenientes para serializar clases de Python a JSON. Ambos enfoques garantizan que los objetos puedan representarse y transmitirse eficazmente en formato JSON.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3