我遇到了一个看似常见的问题,但到目前为止我还没有找到适用于我的解决方案。我想我只是错过了一些小东西,但我已经崩溃寻求帮助。我正在尝试使用 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 许可协议
看起来一个简单的解决方案是将 _id 转换为适合我们正在尝试做的事情的字符串。
在使用 Flask 0.10.1 时找到解决方案阅读 Getting ‘TypeError: ObjectId(“) is not JSON serializable’