python - How to make a class JSON serializable -
how make python class serializable?
a simple class:
class fileitem: def __init__(self, fname): self.fname = fname
what should able output of:
json.dumps()
without error (fileitem instance @ ... not json serializable
)
do have idea expected output? e.g. do?
>>> f = fileitem("/foo/bar") >>> magic(f) '{"fname": "/foo/bar"}'
in case can merely call json.dumps(f.__dict__)
.
if want more customized output have subclass jsonencoder
, implement own custom serialization.
for trivial example, see below.
>>> json import jsonencoder >>> class myencoder(jsonencoder): def default(self, o): return o.__dict__ >>> myencoder().encode(f) '{"fname": "/foo/bar"}'
then pass class json.dumps()
method cls
kwarg:
json.dumps(cls=myencoder)
if want decode you'll have supply custom object_hook
jsondecoder
class. e.g.
>>> 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 @ 0x9337fac> >>>
Comments
Post a Comment