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

Phi*_*l O 5 json mongodb python-2.7

我正在使用MongoDB 3.4和Python 2.7。我已经从数据库中检索了一个文档,可以打印它,结构表明它是Python字典。我想将本文档的内容写为JSON文件。当我创建一个简单的字典时,d = {"one": 1, "two": 2}可以使用。json.dump(d, open("text.txt", 'w')) 但是,如果我用从MongoDB检索的文档替换上面代码中的d,则会收到错误消息

ObjectId不可JSON序列化

有什么建议吗?

Wan*_*iar 5

如您所知,问题在于ObjectId中的值_id是。

ObjectId要序列化的默认json编码器无法理解的类定义。对于默认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"))
Run Code Online (Sandbox Code Playgroud)