[Python-ideas] Json object-level serializer

Mike Graham mikegraham at gmail.com
Thu Jul 29 15:01:27 CEST 2010

On Thu, Jul 29, 2010 at 7:35 AM, Tarek Ziadé <ziade.tarek at gmail.com> wrote:
> Hello,
> 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)
> '"json"'
> Cheers
> Tarek
> --
> 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.


More information about the Python-ideas mailing list