On Thu, Jul 29, 2010 at 7:35 AM, Tarek Ziadé email@example.com wrote:
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)
-- Tarek Ziadé | http://ziade.org
Since there isn't really any magic going on, why use a __foo__ name? The majority of __foo__ names are for things you shouldn't reference yourself, but it doesn't seem like this is too personal a method to do that with.
This allows inheritance of JSONization. The current custom serialization stuff does not. I'm not certain which is the bug and which is the feature.
Since you aren't using anything useful from the json module, why involve it at all? Consistent API?
One nice thing about the json module is that when using it you always produce valid JSON. Even the hooks for custom serialization keep this property. This is fairly nice to have.