最近在学 mongoDB, 尝试把 mongoDB 的查询出来的数据保存到 json 文档,碰到了一点小问题,记录一下。
首先导入一个 ObjectId, from bson import ObjectId

import json
from bson import ObjectId

data = {
    "_id":ObjectId("577d211b1d41c8303f73cf7d")
}
print(json.dumps(data))
TypeError: Object of type ObjectId is not JSON serializable

这里可以看到因为 ObjectId 不在可序列化的范围内导致报错 JSON 文档

但是文档提供了解决办法! 试一下

import json
from json import JSONEncoder
from typing import Any
from bson import ObjectId

data = {
    "_id": ObjectId("577d211b1d41c8303f73cf7d")
}
class JsonEncoder(JSONEncoder):
    def default(self, o: Any) -> Any:
        if isinstance(o, ObjectId):
            return o.__str__()
        # Let the base class default method raise the TypeError
        return super().default(o)

print(json.dumps(data, cls=JsonEncoder))

output=> {"_id": "577d211b1d41c8303f73cf7d"}


↙↙↙阅读原文可查看相关链接,并与作者交流