“ObjectID”类型的对象不是 JSON 可序列化的

新手上路,请多包涵

我遇到了一个看似常见的问题,但到目前为止我还没有找到适用于我的解决方案。我想我只是错过了一些小东西,但我已经崩溃寻求帮助。我正在尝试使用 flask 和 pymongo 获取 json 输出。

这是控制台中使用 print(results) 的对象:

 [{'_id': ObjectId('598b5de38161a821188f1a7c'), 'first name': 'first name', 'last Name': 'last name'}]

当我尝试返回时,出现错误:TypeError: Object of type ‘ObjectId’ is not JSON serializable

班级联系人(资源):

 def get(self):
    results =[]
    connect = MongoClient("<REMOVED>")
    db = connect['<REMOVED>']
    collection = db['contact']
    contacts = collection.find()

    if collection:
        number_of_contacts = collection.count()
        for document in contacts:
            results.append(document)
        print(results)
        return {'results': results, 'count': number_of_contacts}

我试过 bson.json_util 的建议。它确实通过对我的 json 对象进行双重编码来清除可序列化错误。似乎这不是我正在做的事情的好解决方案。

原文由 Nicholas Elliott 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 767
1 个回答