You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python执行json.dumps转换MongoDB返回的字典数组为JSON失败如何解决

故障原因

你执行json.dumps(res)报错是因为Python标准json模块不支持序列化MongoDB返回的ObjectId类型数据,你查询结果里的_id字段为ObjectId实例,不属于JSON原生支持的序列化类型。

可用解决方案

  • 方案1:手动转换_id字段类型
    在遍历查询结果时直接将ObjectId转为字符串,修改你原有代码中遍历游标部分即可:
res = []
for doc in cursor:
    # 将_id转为字符串
    doc['_id'] = str(doc['_id'])
    res.append(doc)
response = json.dumps(res)
  • 方案2:自定义序列化规则
    编写自定义序列化函数处理ObjectId类型,兼容其他可能存在的特殊类型:
import json
from bson import ObjectId

def custom_json_serializer(obj):
    if isinstance(obj, ObjectId):
        return str(obj)
    raise TypeError(f"Type {type(obj)} not serializable")

# 调用dumps时指定自定义序列化函数
response = json.dumps(res, default=custom_json_serializer)
  • 方案3:使用pymongo内置序列化工具
    直接使用pymongo提供的json_util工具,可自动适配所有MongoDB特殊类型,无需额外自定义规则:
from bson import json_util

response = json_util.dumps(res)

内容的提问来源于stack exchange,提问作者JulienTrs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:09:02