json - 使用 Python 从 MongoDB 文档创建 JSON 文件

我正在使用 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.js - Node/Express - 保护客户端/服务器之间通信的好方法

mongodb - 使用键值对将 mongo 数组转换为对象

node.js - 如何使用 MongoDB 按名字和姓氏搜索用户?