Convert dynamic python object to json [duplicate]
Possible Duplicate:
Python serializable objects json
I need to know how to convert a dynamic python object into JSON. The object must be able to have multiple levels object child objects. For example:
class C(): pass
class D(): pass
c = C()
c.dynProperty1 = "something"
c.dynProperty2 = { 1, 3, 5, 7, 9 }
c.d = D()
c.d.dynProperty3 = "d.something"
# ... convert c to json ...
Using python 2.6 the following code:
import json
class C(): pass
class D(): pass
c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"
json.dumps(c.__dict__)
yields the following error:
TypeError: <__main__.D instance at 0x99237ec> is not JSON serializable
I don't know what types of subobjects a user might put into c
. Is there a solution that is smart enough to detect if an attribute is an object and parse it's __dict__
automatically?
UPDATED to include subobjects on c
.
Specify the default=
parameter (doc):
json.dumps(c, default=lambda o: o.__dict__)
json.dumps(c.__dict__)
That will give you a generic JSON object, if that's what you're going for.