python - "ObjectId is not JSON serializable?"时如何正确jsonify Mongo DB文档

标签 python mongodb rest flask

我正在为我的 Python 应用程序设置 MongoDB,并有以下代码:

@app.route('/user/<firstName>', methods=['GET'])
def getUser(firstName):
    print(firstName)
    return jsonify({'users': Users.find({'first_name': firstName})[0]})

抛出此错误:TypeError:ObjectId 类型的对象不可 JSON 序列化 由于 _id 字段为“_id”:ObjectId('5e8676dc0d16f3567167d889')。

我该如何解决这个问题?

最佳答案

在某处找到了这段代码,它现在可以工作了。 *如果有人知道这来自哪里,请标记。

class JSONEncoder(json.JSONEncoder):
    ''' extend json-encoder class'''
    def default(self, o):
        if isinstance(o, ObjectId):
            return str(o)
        if isinstance(o, datetime.datetime):
            return str(o)
        return json.JSONEncoder.default(self, o)


# use the modified encoder class to handle ObjectId & datetime object while jsonifying the response.
app.json_encoder = JSONEncoder

关于python - "ObjectId is not JSON serializable?"时如何正确jsonify Mongo DB文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61020574/

相关文章:

python - 寻找 pyplot.plot() 的标记文本选项

python - 提高python代码的速度

python - 最新的 django-mongodb-engine

java - 接受并返回对象的 REST 服务。客户端怎么写?

android - android 是否加密通过 HttpConnection Post 或类似 Retrofit 的库发送的 https header ?

python - 比较Python中的两个未知列表

python - 在 Jupyter Notebook 上从 ThinkStats 运行练习时出错

c# - 如何使用 C# mongo 驱动程序达到与 python 中的 PyMongo 相同的性能?

python - 根据时间戳选择并用零更新时间戳

ruby-on-rails - 使用 Doorkeeper 使用客户端凭据在 OAuth 中发布