Maison > développement back-end > Tutoriel Python > Comment puis-je rendre mes classes Python sérialisables en JSON ?

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

Patricia Arquette
Libérer: 2024-12-21 14:38:15
original
144 Les gens l'ont consulté

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"}'
Copier après la connexion

Utilisation de la bibliothèque orjson

Pour une solution complète, envisagez d'utiliser la bibliothèque orjson bibliothèque, 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"}'
Copier après la connexion

Conclusion

L'utilisation d'une méthode toJSON() personnalisée ou de 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 efficacement représentés et transmis au format JSON.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal