Comment sérialiser des ensembles avec un encodeur JSON personnalisé en Python ?

Linda Hamilton
Libérer: 2024-10-25 05:17:02
original
275 Les gens l'ont consulté

How to Serialize Sets with a Custom JSON Encoder in Python?

Ensembles de sérialisation JSON

Votre défi vient du fait que l'encodage JSON génère une erreur lors de la rencontre d'ensembles, car ils ne sont pas intrinsèquement JSON sérialisable. Pour surmonter ce problème, nous pouvons créer un encodeur JSON personnalisé.

Considérons l'exemple suivant :

import json

class SetEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, set):
            return list(obj)
        return json.JSONEncoder.default(self, obj)
Copier après la connexion

Ici, la classe SetEncoder étend json.JSONEncoder et inclut une méthode par défaut personnalisée. Lorsqu'un objet est transmis à l'encodeur, cette méthode détermine comment le gérer. S'il s'agit d'un ensemble, la méthode renvoie une liste de ses éléments. Sinon, il délègue le processus d'encodage au JSONEncoder d'origine.

En utilisant cet encodeur personnalisé, vous pouvez sérialiser les ensembles JSON comme suit :

data_str = json.dumps(set([1, 2, 3, 4, 5]), cls=SetEncoder)
print(data_str)
Copier après la connexion

Ce code affichera :

'[1, 2, 3, 4, 5]'
Copier après la connexion

Gestion des objets complexes et des valeurs imbriquées

Comme vous l'avez mentionné, vos objets peuvent contenir des valeurs imbriquées qui doivent également être sérialisées. À cette fin, vous pouvez étendre la méthode par défaut pour prendre en compte des types supplémentaires et leur sérialisation personnalisée.

Par exemple, disons que vous avez une classe appelée Something que vous souhaitez représenter lors de la sérialisation. Vous pouvez ajouter ce qui suit à la méthode par défaut :

if isinstance(obj, Something):
    return 'CustomSomethingRepresentation'
Copier après la connexion

Maintenant, lorsqu'un objet de type Something est rencontré, l'encodeur renverra la valeur 'CustomSomethingRepresentation'.

De cette façon, vous pouvez créer un encodeur complet qui gère différents types de données et valeurs imbriquées selon vos besoins, garantissant ainsi une sérialisation JSON réussie.

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