我正在使用 MongoDB 3.4 和 Python 2.7。我从数据库中检索了一个文档,我可以打印它,结构表明它是一个 Python 字典。我想将此文档的内容写成 JSON 文件。当我创建一个像 d = {"one": 1, "two": 2}
这样的简单字典时,我可以使用 json.dump(d, open("text.txt", 'w'))
但是,如果我将上述代码中的 d 替换为从 MongoDB 检索的文档,则会收到错误消息
ObjectId is not JSON serializable
建议?
最佳答案
如您所见,问题在于 _id
的值在 ObjectId 中。 .
要序列化的默认 json 编码器不理解 ObjectId
的类定义。对于默认 JSONEncoder 无法理解的任何 Python 对象,您应该会收到类似的错误。 .
另一种方法是编写您自己的自定义编码器来序列化 ObjectId
。但是,您应该避免发明轮子并使用提供的 PyMongo/bson实用方法bson.json_util
例如:
from bson import json_util
import json
json.dump(json_util.dumps(d), open("text.json", "w"))
https://stackoverflow.com/questions/41465836/
相关文章:
ruby-on-rails - 在 Rails 控制台中列出所有 Mongoid 模型
mongodb - Meteor 1.4.1.1 上副本集的正确 MONGO_URL 设置是什么
java - 如何防止连接池在 mongodb 上使用 java 驱动程序关闭?
node.js - 我可以在 MongoDB 的聚合查询中申请 forEach 吗?
node.js - Mongoose 类型错误 : User is not a constructo
javascript - 为已登录的用户手动创建 Passport session
node.js - Node/Express - 保护客户端/服务器之间通信的好方法