Code Snippet to recursively traverse a dictionary and remove certain key/value pair
In case of complex dictionaries like
my_blog = { '_created' : datetime.datetime (2007,01,03),
'_updated' : datetime.datetime (2011,06,11),
'name' : 'MyBLive',
'latest_post' : { '_created' : datetime.datetime (2007,06,9),
'_updated' : datetime.datetime (2007,069),
'name' : 'Hello World !' }
The problem with this is that datetime.datetime entities are not JSON Serializable. One approach could be to provide a serializer for datetime.datetime entities as suggested by verte over IRC. If you want to have a datetime.datetime aware JSONSerializer, you should have a look at the django.core.serializers.json module
In my case, we were using a Google App Engine application and the JSON response need not contain these key/value pairs so it makes more sense if these are removed from the dictionary.
def rm (d, l):
"""
Removed from dictionary "d" all those key-value pairs the keys of which
are defined as a list in "l"
"""
if not l: return d
if reduce ( lambda x,y: x or y, [x in d.keys () for x in l]):
[d.pop (x, None) for x in l]
[rm (x, l) for x in d.values () if isinstance (x, dict)]
return d
No comments:
Post a Comment