Forking simplejson

Paul Kölle paul at subsignal.org
Thu Oct 27 08:18:38 EDT 2011


Am 26.10.2011 19:34, schrieb Nathan Rice:
> Since this happily went off to the wrong recipient the first time...
>> The python json module/simpljson are badly in need of an architecture
> update. The fact that you can't override the encode method of
> JSONEncoder and have it work reliably without monkey patching the pure
> python encoder is a sign that something is horribly wrong.
+1
I wonder why the builtin json didn't implemented the __json__ hook. Now 
you need to write encoders for possibly arbitrary (imported/third party) 
objects.... Looks like it's not so hard to extend json.JSONEncoder to 
look for __json__ though:
 >>> import json
 >>> from functools import partial
 >>> from types import MethodType
 >>> class Encoder(json.JSONEncoder):
... def default(self, obj):
		fn = getattr(obj, '__json__', None)
... if fn and type(fn) == MethodType:
... return obj.__json__()
... return json.JSONEncoder.default(self, obj)
...
 >>> class T(object):
... def __json__(self):
... return 'foo'
...
 >>> t = T()
 >>> dumps = partial(json.dumps, cls=Encoder)
 >>> dumps(dict([(1,1), (2,2), ('test',t)]))
'{"test": "foo", "1": 1, "2": 2}'
 >>>
cheers
 Paul
[snip]


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /