Flask-Restful返回200状态码时出现对象不可序列化错误求助
问题排查与解决方案
核心问题
报错TypeError: Object of type function is not JSON serializable的直接原因是返回的响应数据中包含了无法被JSON序列化的函数对象。返回400状态码时能正常运行,是因为所有400的响应都是纯字符串键值对的字典,JSON可以直接处理。
代码中的明显错误
看代码最后一行的返回语句:
return {"mes":, "id": str(new_user.id)}, 200
这里存在语法错误:"mes"键后面没有对应的值,这种写法在Python中是无效的。如果是笔误(比如原本想返回成功提示),这种错误会导致Python解析时出现异常,甚至意外引入函数对象(比如不小心把某个方法名写在这里而没有加括号调用),最终触发JSON序列化失败。
修复步骤
- 修正返回语句的语法错误,补充合法的可序列化值,比如成功提示字符串:
return {"msg": "User created successfully", "id": str(new_user.id)}, 200 - 检查返回数据的所有值,确保没有包含函数、未序列化的模型对象等不可JSON序列化的类型。当前返回的只有字符串类型的
id和提示信息,修正后即可正常序列化。
关于CORS的误解
报错栈中出现flask_cors相关代码,只是因为CORS扩展在处理响应时触发了JSON序列化流程,CORS并不是问题根源,真正的问题出在返回的响应数据本身。
内容的提问来源于stack exchange,提问作者rkrishnasanka
相关产品推荐
相关产品推荐

