Объект MongoDB, сериализованный как JSON - PullRequest
6 голосов
/ 06 июня 2011

Я пытаюсь отправить объект MongoDB в кодировке JSON обратно в ответ HTTP.Я следил за несколькими другими подобными вопросами, но все еще что-то упускаю.Не выдается никаких исключений, но я получаю загадочный <api.views.MongoEncoder object at 0x80a0c02c> ответ в браузере.Я уверен, что это что-то простое, но любая помощь будет оценена.2.4, pymongo, simplejson.

1 Ответ

17 голосов
/ 06 июня 2011

В более новых версиях simplejson (и модуля json в Python 2.7) вы реализуете метод default в своих подклассах:

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)

Затем вы можете использовать кодировщик с MongoEncoder().encode(obj) или json.dumps(obj, cls=MongoEncoder).

...