python - Flask 的 jsonify 函数与 flask-marshmallow 不一致

标签 python flask flask-restful marshmallow

我正在使用 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/

相关文章:

javascript - 通过 flask 中的 ajax 调用访问 Tornado 中的 cookie

python - Flask-restful 中的 Catch-All URL

python - resource 可选参数,用于检索 Flask Restful 上的所有数据

python - Django - 使用 Celery 7 天后更新字段值

python - 将 HTML 转换为 PDF 的模块与 Bootstrap 和 Flask 兼容

python - 使用动态规划的分词

python - flask : What exactly is @app

python - 如何在 Flask-RESTful 中添加自定义 HTTP 响应 header ?

python - 如何正确解析ctypes中的嵌套结构

python - 5000 万行 Pandas groupby+transform 需要 3 小时