当前位置: 首页 > 知识库问答 >
问题:

“ObjectID”类型的对象不可JSON序列化

贲宏硕
2023-03-14

我有一个看起来很常见的问题,但到目前为止,我还没有找到一个适合我的解决方案。我想我只是错过了一些小事情,但我已经崩溃了,请求帮助。我正在尝试使用flask和pymongo获得json输出。

以下是控制台中使用print(结果)的对象:

[{'_id': ObjectId('598b5de38161a821188f1a7c'), 'first name': 'first name', 'last Name': 'last name'}]

当我试图返回时,我得到了错误: TypeError: ObjectId类型的对象不是JSON可序列化的

类联系人(资源):

def get(self):
    results =[]
    connect = MongoClient("<REMOVED>")
    db = connect['<REMOVED>']
    collection = db['contact']
    contacts = collection.find()

    if collection:
        number_of_contacts = collection.count()
        for document in contacts:
            results.append(document)
        print(results)
        return {'results': results, 'count': number_of_contacts}

我试过bson。json_util建议。它确实通过双重编码我的json对象来清除可序列化错误。看来这不是一个很好的解决办法。

共有3个答案

乜嘉悦
2023-03-14

我想这对你会有帮助。

from flask import Response
...
...
list_of_books = mongo_db.db[BOOK_COLLECTION].find()
list_of_books = [each_book for each_book in list_of_books]

return  Response(json.dumps(list_of_books,default=str),mimetype="application/json")
南宫海超
2023-03-14
from bson import json_util
items = mongo.db.shop_items.find_one({"item_name": "abc"})
return make_response(json_util.dumps({"items": items}), HTTPStatus.OK)

---这解决了我的错误。

龚勇锐
2023-03-14

看起来一个简单的解决方案是将_id转换为一个字符串,该字符串适用于我们正在尝试的操作。

for document in contacts:
    document['_id'] = str(document['_id'])
    results.append(document)

在使用Flask 0.10.1时,找到读取“TypeError:ObjectId(“”)不可JSON序列化”的解决方案

 类似资料:
  • 我正在尝试将文件从mongoDB读取到本地。 我的代码如下:STRING=“myLocalPath”PATH=STRING.json 我得到错误-对象类型'ObjectId'是不是JSON序列化...请建议。

  • 我有一个api,我正在尝试使用Flask Pymongo存储/发布一个用户对象。 但是,我得到了以下错误 文件“/home/kay/.local/share/virtualenvs/server-iT4jZt3h/lib/python3.7/site-packages/flask/json/i│ 尼特。py”,第321行,在jsonify中 │ 转储(数据,缩进=缩进,分隔符=分隔符)“\n”,│

  • 问题内容: 我使用Python Flask Restful API遇到问题,并且数据进入Elasticsearch,当我用Postman发布新数据时,问题是: TypeError:“ Response”类型的对象不可JSON序列化 你能帮助我吗? 模型: 视图: 错误: 编辑:我发现了问题。它在def post(self,people_id)方法中: 新队: 问题答案: 这可以简单地通过以下方式完

  • 我正在为我的不和谐机器人创建autovc命令,但我遇到了一些错误。代码: 错误: 文件“C:\Users\illus\AppData\Local\Programs\Python\39\lib\site packages\discord\ext\commands\core.py”,第85行,在包装的ret=await coro(*args,**kwargs)文件“d:\BOT\test.py”,第3

  • 我有以下用于序列化查询集的代码: 下面是我的 我需要将其序列化。但它说无法序列化

  • 我有一个存储店铺名称和每日销售额的数据框架。我尝试使用下面的Python脚本将其插入Salesforce。 但是,我收到以下错误: 下面,是数据框的视图。 我使用以下代码将其插入Salesforce。 当执行上面的最后一行时,我得到了错误。 我该如何解决这个问题?