[Python-ideas] Json object-level serializer
M.-A. Lemburg
mal at egenix.com
Thu Jul 29 23:25:09 CEST 2010
Georg Brandl wrote:
> Am 29.07.2010 14:31, schrieb M.-A. Lemburg:
>> Georg Brandl wrote:
>>> Am 29.07.2010 13:35, schrieb Tarek Ziadé:
>>>> 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"'
>>>
>>> You can do this with a very short subclass of the JSONEncoder:
>>>
>>> class MyJSONEncoder(JSONEncoder):
>>> def default(self, obj):
>>> return obj.__json__() # with a useful failure message
>>
>> Does that also work with the JSON C extension ?
>
> I think so. The C encoder gets the default function as an argument.
Then that sounds like the right way forward.
--
Marc-Andre Lemburg
eGenix.com
Professional Python Services directly from the Source (#1, Jul 29 2010)
>>> Python/Zope Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
::: Try our new mxODBC.Connect Python Database Interface for free ! ::::
eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48
D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
Registered at Amtsgericht Duesseldorf: HRB 46611
http://www.egenix.com/company/contact/
More information about the Python-ideas
mailing list