KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have the following simple methods for writing a python object to a file using jsonpickle: def json_serialize(obj, filename, use_jsonpickle=True): f = open(filename, 'w') if use_jsonpickle: import jsonpickle json_obj = jsonpickle.encode(obj) f.write(json_obj) else: simplejson.dump(obj, f) f.close() def json_load_file(filename, use_jsonpickle=True): f = open(filename) if use_jsonpickle: import jsonpickle json_str = f.read() obj = jsonpickle.decode(json_str) else: obj = simplejson.load(f) return obj the problem is that whenever I use these, it loads my objects back as dictionaries (that have fields like: "py/object": "my_module.MyClassName") but not as an actual Python object of the type that was used to generate the json string. How can I make it so jsonpickle actually converts the loaded string back to the object? to illustrate this with an example, consider the following: class Foo: def __init__(self, hello): self.hello = hello # make a Foo obj obj = Foo("hello world") obj_str = jsonpickle.encode(obj) restored_obj = jsonpickle.decode(obj_str) list_objects = [restored_obj] # We now get a list with a dictionary, rather than # a list containing a Foo object print "list_objects: ", list_objects This yields: list_objects: [{'py/object': 'as_events.Foo', 'hello': 'hello world'}] Rather than something like: [Foo()]. How can I fix this? thanks.
Tags (comma-separated)
Save Edits
Cancel