TypeError TypeError:ObjectId 类型的对象不可 JSON 序列化

问题描述 投票:0回答:1

我正在尝试编写一个 Python Flask 程序来读取我的 MongoDB 数据库并以 Json 格式输出表。我的烧瓶似乎正在运行,因为我能够进入默认端点,但我的第二个端点给了我以下错误。如有任何反馈,我们将不胜感激。

TypeError: Object of type ObjectId is not JSON serializable

这是我的代码。

我的数据库名称是“movies_db”,集合名称是“movie_info”。

from flask import Flask, jsonify
from pymongo import MongoClient

app = Flask(__name__)

# Replace with MongoDB connection details
mongo_client = MongoClient('mongodb://localhost:27017/')
db = mongo_client['movies_db']

@app.route('/')
def index():
    return 'Welcome to my Project!'


import json

@app.route('/export-json', methods=['GET', 'POST'])
def export_json():
    collection_name = 'movie_info'  

    data = list(db[collection_name].find({}))

    # Convert data to JSON using Flask's jsonify
    json_data = jsonify(data).get_json()

    # Write JSON data to a file
    with open('data.json', 'w') as json_file:
        json.dump(json_data, json_file, indent=4)

    return jsonify({'message': 'Data exported to data.json'})

if __name__ == '__main__':
    app.run()`

我尝试使用此链接中的解决方案,但仍然没有成功。

类型错误:ObjectId('') 不可 JSON 序列化

python flask pymongo flask-mongoengine
1个回答
0
投票

如果您不关心

_id
字段,您可以通过更改
find()
来排除该字段。

data = list(db[collection_name].find({}, {'_id': 0})

如果您的记录中有其他

ObjectId
,这将无济于事。

© www.soinside.com 2019 - 2024. All rights reserved.