Nas versões mais recentes do
simplejson
(e o json
módulo em Python 2.7) você implementa o default
método em suas subclasses:from json import JSONEncoder
from pymongo.objectid import ObjectId
class MongoEncoder(JSONEncoder):
def default(self, obj, **kwargs):
if isinstance(obj, ObjectId):
return str(obj)
else:
return JSONEncoder.default(obj, **kwargs)
Você pode então usar o codificador com
MongoEncoder().encode(obj)
ou json.dumps(obj, cls=MongoEncoder)
.