修身养性,知行合一

  • 首页
  • 爱码
    • 系统
    • 数据库
    • JavaScript
    • CSharp
    • Python
  • 生活
    • 文化
    • 美食
  • 杂谈
  • 关于
修身养性,知行合一
码字,杂谈
  1. 首页
  2. 爱码
  3. 数据库
  4. 正文

TypeError: ObjectId('') is not JSON serializable

2019年6月4日 3272点热度 0人点赞 0条评论

在使用MongoDB时总是会和数据的ID打交道,MongoDB的ID使用的是ObjectId对象类型。ObjectId无法通过json序列化,需要转换。

错误:

TypeError: ObjectId('5cb58e2b8b403d177092b667') is not JSON serializable

解决方法,将ObjectId对象转成字符串,使用中直接使用'5cb58e2b8b403d177092b667'即可。

from bson import ObjectId
import json

class JSONEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, ObjectId):
            return str(o)
        return json.JSONEncoder.default(self, o)

res = json.dumps(DBResultMessage, cls=JSONEncoder)

该方法是本人觉得比较简单好用的方案之一。同理,该方法也可以用于其他json不支持的格式转换,比如datetime类型,只需要将函数中类型变成datetime,返回值转换成希望的字符格式即可。

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
标签: json mongodb python
最后更新:2019年6月4日

jeremyjone

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

最新 热点 随机
最新 热点 随机
js 问号链以及双问号的打包问题 关于 git unsafe repository 的错误 美化 Windows Terminal(升级版) win10 修改本地账户名称 小技巧系列 - JS判断图片是否已经缓存 推荐一波起始页吧
关于 git unsafe repository 的错误js 问号链以及双问号的打包问题
fetch的二次封装 充分利用公网 -- 将联通光猫设置为桥接 将python的date()对象存入MySql IdentityServer4深入使用(一)-- 认证与授权(上) windows server 域内配置防火墙规则 vue3上手 -- 更新 jz-gantt 小记

(っ•̀ω•́)っ✎⁾⁾ 开心每一天

COPYRIGHT © 2021 jeremyjone.com. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

京ICP备19012859号-1

京公网安备 11010802028585号