Maison > développement back-end > Tutoriel Python > Comment puis-je rendre les classes Python personnalisées JSON sérialisables ?

Comment puis-je rendre les classes Python personnalisées JSON sérialisables ?

DDD
Libérer: 2024-12-27 00:31:10
original
517 Les gens l'ont consulté

How Can I Make Custom Python Classes JSON Serializable?

Rendre des classes Python personnalisées JSON sérialisables

Lors de la tentative de sérialisation de classes Python personnalisées en JSON à l'aide de la fonction json.dumps(), une erreur peut se produire en raison du comportement par défaut de Python consistant à ne pas prendre en charge nativement la sérialisation des objets personnalisés.

Sérialisation personnalisée Méthode : .toJSON()

Une approche pour résoudre ce problème consiste à créer une méthode .toJSON() personnalisée au sein de la classe qui implémente la logique de sérialisation. Cette méthode convertit l'objet en un dictionnaire sérialisable JSON en itérant sur ses attributs et en générant une chaîne JSON. Voici un exemple :

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

    def toJSON(self):
        return json.dumps({"filename": self.fname})
Copier après la connexion

En appelant la méthode .toJSON(), vous pouvez sérialiser l'objet personnalisé en une chaîne JSON :

x = FileItem('/foo/bar')
json_string = x.toJSON()
Copier après la connexion

Bibliothèque orjson

Pour une approche plus complète et efficace, il est recommandé d'utiliser des bibliothèques tierces telles que orjson. Orjson est une extension C pour Python qui fournit une sérialisation et une désérialisation JSON ultra-rapides. Avec orjson, vous pouvez activer la sérialisation d'objets personnalisés en définissant une métaclasse :

import orjson

class JsonSerializableMeta(type):
    def __orjson__(cls):
        return cls.__dict__

class FileItem(metaclass=JsonSerializableMeta):
    def __init__(self, fname):
        self.fname = fname
Copier après la connexion

Cette métaclasse remplace la méthode __orjson__ pour renvoyer les attributs de l'objet sous forme de dictionnaire, permettant ainsi la sérialisation en 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal