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

场景描述

在使用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')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值