当前位置: 代码迷 >> 综合 >> MongoDB报错:TypeError: Object of type ObjectId is not JSON serializable
  详细解决方案

MongoDB报错:TypeError: Object of type ObjectId is not JSON serializable

热度:37   发布时间:2023-09-30 16:32:05.0

场景描述

在使用MongoDB数据库插入数据之后,再使用Flask-RESTful接口返回数据的时候报错:

TypeError: Object of type ObjectId is not JSON serializable

原因分析

造成该问题的原因是数据在写入MongoDB的时候,即使你没有指定_id字段,也会为每一条数据自动生成一个_id字段,例如:

{"_id" : ObjectId("6180af3ef261f0827ea248d6"),"省份名称" : "澳门","省份链接" : "https://www.gongkaoleida.com/area/3509","省份代号" : "3509"
}

该字段为ObjectId类型,不能使用Json序列化返回,所以会报错。
至于为什么会加入一个_id字段,可以参看官方文档:为什么 PyMongo 会在我的所有文档中添加一个 _id 字段?

解决办法

既然_id字段不能被转换,也对我们实际数据没什么作用,那么在插入数据之后将其弹出即可,示例如下:

self.db.filter_result.insert_one(item)
item.pop('_id')
  相关解决方案