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