I’m trying to serialize a list of python objects with JSON (using simplejson) and am getting the error that the object “is not JSON serializable”.
The class is a simple class having fields that are only integers, strings, and floats, and inherits similar fields from one parent superclass, e.g.:
class ParentClass: def __init__(self, foo): self.foo = foo class ChildClass(ParentClass): def __init__(self, foo, bar): ParentClass.__init__(self, foo) self.bar = bar bar1 = ChildClass(my_foo, my_bar) bar2 = ChildClass(my_foo, my_bar) my_list_of_objects = [bar1, bar2] simplejson.dump(my_list_of_objects, my_filename)
where foo, bar are simple types like I mentioned above. The only tricky thing is that ChildClass sometimes has a field that refers to another object (of a type that is not ParentClass or ChildClass).
What is the easiest way to serialize this as a json object with simplejson? Is it sufficient to make it serializable as a dictionary? Is the best way to simply write a dict method for ChildClass? Finally, does having the field that refer to another object significantly complicate things? If so, I can rewrite my code to only have simple fields in classes (like strings/floats etc.)