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})
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()
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
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!