我正在使用 flask-RESTful 开发 API,但遇到 Flask 的 jsonify 函数问题。我正在使用 flask-marshmallow 进行 JSON 序列化。下面是一个非常简化的代码片段:
result = activities_schema.dump(activities)
return jsonify(result)
在本地,端点将返回具有键“data”和“errors”的 json;然而,当在 Linux 服务器上运行时,这会返回一个包含列表和字典的结果,但没有“数据”和“错误”键。
我已经确定这种不一致是由 Flask 的 jsonify 函数引起的,方法是在 API 返回结果之前打印出结果。在本地和服务器上,'result' 都等于:
MarshalResult(data=[], errors={})
但是,当我在使用 Flask 的 jsonify 后打印响应时,我在本地得到了这个:
('{\n "data": [], \n "errors": {}\n}', '\n')
在服务器上打印时:
('[\n [], \n {}\n]', '\n')
有人知道为什么这些不匹配吗?
最佳答案
我进行了更多研究,找到了解决问题的一个(我觉得有点傻,因为解决方案就在文档中),但无法解释为什么会出现原始问题。
解决方案(找到 here )是使用:
jsonify(result.data)
或:
activities_schema.jsonify(result)
这两种方法都只会返回数据,而不是错误。
我仍然无法解释为什么以另一种方式执行此操作在服务器和我的本地计算机之间不一致,但也许这是一个不同的问题。
关于python - Flask 的 jsonify 函数与 flask-marshmallow 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53269323/