最近在学 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"}