What about adding in the json package the ability for an object to provide a different object to serialize ? This would be useful to translate a class into a structure that can be passed to json.dumps
So, it __json__ is provided, its used for serialization instead of the object itself:
import json class MyComplexClass(object):
... def __json__(self): ... return 'json' ...
o = MyComplexClass() json.dumps(o)
Have a look at turbojson , the jsonification package that uses peak.rules  and which comes with turbogears . It does exactly what you propose.
[1a] http://pypi.python.org/pypi/TurboJson [1b] http://svn.turbogears.org/projects/TurboJson [2a] pypi.python.org/pypi/PEAK-Rules [2b] http://peak.telecommunity.com/DevCenter/RulesReadme  http:///www.turbogears.org