["python","json","serialization"]
How to make a class JSON serializable

How to make a Python class serializable? class FileItem: def __init__(self, fname): self.fname = fname Attempt to serialize to JSON: >>> import json >>> x = FileItem('/foo/bar') >>> json.dumps(x) TypeError: Object of type 'FileItem' is not JSON serializable
Do you have an idea about the expected output? For example, will this do? >>> f = FileItem("/foo/bar") >>> magic(f) '{"fname": "/foo/bar"}' In that case you can merely call json.dumps(f.__dict__). If you want more customized output then you will have to subclass JSONEncoder and implement your own custom serialization. For a trivial example, see below. >>> from json import JSONEncoder >>> class MyEncoder(JSONEncoder): def default(self, o): return o.__dict__ >>> MyEncoder().encode(f) '{"fname": "/foo/bar"}' Then you pass this class into the json.dumps() method as cls kwarg: json.dumps(cls=MyEncoder) If you also want to decode then you'll have to supply a custom object_hook to the JSONDecoder class. For example: >>> 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> >>>