"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je rendre mes classes Python sérialisables JSON ?

Comment puis-je rendre mes classes Python sérialisables JSON ?

Publié le 2024-12-21
Parcourir:771

How Can I Make My Python Classes JSON Serializable?

Rendre les classes Python JSON sérialisables

La sérialisation permet de convertir des objets dans un format adapté à la persistance ou au transfert. La sérialisation de classes personnalisées en JSON entraîne souvent une TypeError en raison de leur nature non sérialisable en JSON.

Implémentation d'une méthode toJSON()

Une approche consiste à créer un toJSON() pour la classe, qui gère manuellement sa sérialisation. Cela nécessite la mise en œuvre d'une fonction de sérialisation JSON personnalisée et la garantie d'une gestion appropriée des objets imbriqués.

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"}'

Utilisation de la bibliothèque orjson

Pour une présentation complète solution, pensez à utiliser la bibliothèque orjson, qui fournit un moyen efficace et personnalisable de sérialiser des classes personnalisées en JSON. Il offre des fonctionnalités avancées telles que l'application de schémas et la prise en charge de structures d'objets complexes.

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"}'

Conclusion

Utilisation d'un toJSON() personnalisé ou la bibliothèque orjson fournit des solutions pratiques pour sérialiser les classes Python en JSON. Les deux approches garantissent que les objets peuvent être représentés et transmis efficacement au format JSON.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3