Donc, voilà la question :
Comment créer une classe sérialisable ?
une classe simple :
Que dois-je faire pour être en mesure d’obtenir la production de :
sans une erreur ( `` )
Donc, voilà la question :
Comment créer une classe sérialisable ?
une classe simple :
Que dois-je faire pour être en mesure d’obtenir la production de :
sans une erreur ( `` )
Avez-vous une idée sur les résultats attendus? Pour, par exemple, cela fera?
>>> f = FileItem("/foo/bar")
>>> magic(f)
'{"fname": "/foo/bar"}'
Dans ce cas, vous pouvez simplement appeler json.dumps(f.__dict__)
.
Si vous voulez plus de sortie personnalisé, puis vous aurez à la sous-classe JSONEncoder et de mettre en œuvre votre propre sérialisation personnalisée.
Pour un exemple trivial, voir ci-dessous.
>>> from json import JSONEncoder
>>> class MyEncoder(JSONEncoder):
def default(self, o):
return o.__dict__
>>> MyEncoder().encode(f)
'{"fname": "/foo/bar"}'
Ensuite, vous passez cette classe dans l' json.dumps()
méthode de cls
kwarg:
json.dumps(cls=MyEncoder)
Si vous aussi vous voulez décoder, alors vous aurez à fournir une coutume object_hook
de la JSONDecoder
classe. Par exemple
>>> def from_json(json_object):
if 'fname' in json_object:
return FileItem(json_object['fname'])
>>> f = JSONDecoder(object_hook = from_json).decode('{"fname": "/foo/bar"}')
>>> f
<__main__.FileItem object at 0x9337fac>
>>>
Pour les plus complexes des classes vous pourriez envisager de l'outil jsonpickle:
jsonpickle est une bibliothèque Python pour la sérialisation et la désérialisation du complexe des objets Python et de JSON.
Le standard de Python bibliothèques pour le codage Python en JSON, comme le stdlib json, simplejson, et demjson ne peut gérer que Python primitives sont directement en JSON équivalent (par exemple, dicts, des listes, des chaînes de caractères, entiers, etc.). jsonpickle s'appuie sur le dessus de ces bibliothèques et permet à plus de structures de données complexes pour être sérialisé en JSON. jsonpickle est hautement configurable et extensible–en permettant à l'utilisateur de choisir le JSON backend et ajouter d'autres backends.
Voici mes 3 cents...
Cela illustre la sérialisation json explicite d’un objet python arborescente.
Remarque : Si vous vouliez en fait un code comme celui-ci vous pouvez utiliser la classe torsadée FilePath .
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.