Flask-RESTful使用jsonify返回数据触发TypeError错误求助
问题原因与解决方法
问题根源
Flask-RESTful 的 Resource 视图方法会自动将返回的可序列化对象(比如字典)转换为 JSON 响应,不需要手动调用 jsonify。你当前返回的 jsonify(result) 本身是一个 Flask Response 对象,框架会尝试把这个对象再序列化为 JSON,这就导致了 TypeError: Object of type Response is not JSON serializable 错误。
单独执行 test = jsonify(result), 200 不报错,是因为这只是创建了一个包含 Response 对象和整数的元组,并没有触发 Flask-RESTful 的序列化处理逻辑,只有当这个元组作为视图返回值时,框架才会尝试解析并序列化其中的内容。
解决方法
有两种可行的修正方式:
- 直接返回字典和状态码(推荐,符合 Flask-RESTful 的设计逻辑):
class MyClass(Resource): def post(self): result = my_func() return result, 200
框架会自动将 result 字典序列化为 JSON,并设置状态码为 200。
- 返回自定义 Response 对象(适用于需要添加响应头等额外配置的场景):
from flask import jsonify class MyClass(Resource): def post(self): result = my_func() response = jsonify(result) response.status_code = 200 # 可添加额外响应头,比如 response.headers['X-Custom-Header'] = 'value' return response
内容的提问来源于stack exchange,提问作者Geo48
相关产品推荐
相关产品推荐

