我有一个api,我正在尝试使用Flask Pymongo存储/发布一个用户对象。
但是,我得到了以下错误
文件“/home/kay/.local/share/virtualenvs/server-iT4jZt3h/lib/python3.7/site-packages/flask/json/i│ 尼特。py”,第321行,在jsonify中
│ 转储(数据,缩进=缩进,分隔符=分隔符)“\n”,│ 文件“/home/kay/.local/share/virtualenvs/server-iT4jZt3h/lib/python3.7/site-packages/flask/json/i│ 尼特。py”,第179行,转储中
│ rv=_json。倾倒区(obj,**kwargs)│ 文件“/usr/lib/python3.7/json/init.py”,第238行,转储中
│ **千瓦)。编码(obj)│ 文件“/usr/lib/python3.7/json/encoder.py”,第201行,编码
│ 块=列表(块)│ 文件“/usr/lib/python3.7/json/encoder.py”,第438行,在iterencode中│ o=_默认值(o)│ 默认情况下,文件“/home/kay/link/server/src/run.py”第18行│ 返回json。杰森编码器。默认值(self,o)│ 默认情况下,文件“/usr/lib/python3.7/json/encoder.py”第179行│ raise TypeError(类型为{o.class.name}的对象)│ TypeError:InsertOneResult类型的对象不可JSON序列化
应用程序/用户/资源。派克
from flask_restful import Resource
from flask import jsonify, request
from .repository import UsersRepository
from db import mongo
class UsersResource(Resource):
def __init__(self):
self.repository = UsersRepository()
def get(self):
data = {"Users": "Resource"}
res = data, 200
return res
def post(self):
req = request.get_json()
user = {
"email": req.get("email"),
"password": req.get("password")
}
result = mongo.db.users.insert_one(user)
return jsonify(result)
跑派克
from flask import Flask
from app import api_bp
from db import mongo
from bson.objectid import ObjectId
import json
import datetime
import os
class JSONEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, ObjectId):
return str(o)
if isinstance(o, set):
return list(o)
if isinstance(o, datetime.datetime):
return str(o)
return json.JSONEncoder.default(self, o)
def create_app(config_filename):
app = Flask(__name__)
app.config.from_object(config_filename)
app.register_blueprint(api_bp, url_prefix='/api')
mongo.init_app(app)
app.json_encoder = JSONEncoder
return app
# def logger():
# def database():
if __name__ == "__main__":
app = create_app("config")
app.run(host='0.0.0.0', port=8080, debug=True)
>
获取json输入时使用force=true:
在插入mongo之前,可以检查字段是否为空。
insert_one()
返回一个InsertOneResult
对象,该对象包含插入的ID(如@stivane的注释所建议的)以及一个标志,该标志指示写被数据库破解了。其他操作具有类似的结果对象,并且它们都不是JSON可序列化的。
Flask PyMongo的未来版本可能会添加帮助程序来支持这一点,您可以按照https://github.com/dcrosta/flask-pymongo/issues/62添加想法和建议。
我相信按照前面的建议你可以找到答案。但我想提供另一个简化它的解决方案。
解决方案假设安装了pymongo
和flask
包:
from flask import Flask
from flask.json import JSONEncoder
from bson import json_util
from . import resources
# define a custom encoder point to the json_util provided by pymongo (or its dependency bson)
class CustomJSONEncoder(JSONEncoder):
def default(self, obj): return json_util.default(obj)
application = Flask(__name__)
application.json_encoder = CustomJSONEncoder
if __name__ == "__main__":
application.run()
我有一个看起来很常见的问题,但到目前为止,我还没有找到一个适合我的解决方案。我想我只是错过了一些小事情,但我已经崩溃了,请求帮助。我正在尝试使用flask和pymongo获得json输出。 以下是控制台中使用print(结果)的对象: 当我试图返回时,我得到了错误: TypeError: ObjectId类型的对象不是JSON可序列化的 类联系人(资源): 我试过bson。json_util建议。
我正在尝试将文件从mongoDB读取到本地。 我的代码如下:STRING=“myLocalPath”PATH=STRING.json 我得到错误-对象类型'ObjectId'是不是JSON序列化...请建议。
问题内容: 我使用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。 当执行上面的最后一行时,我得到了错误。 我该如何解决这个问题?