【问题标题】:Jsonify Return is returning emptyJsonify Return 返回为空
【发布时间】:2016-07-10 06:55:36
【问题描述】:

我有一个让我发疯的问题。我有一个在 Flask 中构建的 API 中运行的函数。我根据发生的某些事情返回 JSON 值。我将只向您展示四行代码,因为其余的在这里并不重要:

print 'example' not in json_string
return jsonify({'error': 'Error entering user.'})

if 'example' not in json_string:
    return jsonify({'error': 'Error entering user.'})

所以基本上我第一次运行它并打印True返回:

{'error': 'Error entering user.'}

然后我评论说首先返回,它验证 if 语句并返回:

{}

这里到底发生了什么?我复制了完全相同的行,但它不会在 IF 语句之后返回值。它确实返回一个空集,但没有返回任何内容。

对我来说毫无意义。有任何想法吗?谢谢!

更新

在第二种情况下,如果我在返回之前打印它,我会得到<Response 55 bytes [200 OK]>,所以那里有东西。为什么不退呢?

【问题讨论】:

  • 这些行都是同一个函数的一部分吗?
  • 是的,它们在同一个函数中。对于更多上下文,它在一个 try 函数中,我已经意识到它现在正在进入函数的“finally”部分。我不明白为什么它会到达那里,因为它会在 if 语句中打印出任何内容。既然我在这里得到更多信息,我现在将用更多细节来扩展这个问题......
  • 啊,我太傻了。我传递的返回实际上是返回 try 函数,而不是整个函数。如果其他人有同样的问题,我会扩展我的问题。
  • 不要忘记 finally 无论是否引发异常都会被执行......所以如果它的那部分从结尾处脱落/返回......那'也可能会引起混乱......
  • 谢谢,是的,这是有道理的。我在 try/except/finally 函数的工作方式上犯了一些错误,所以我会在这里详细说明。我敢肯定其他人也遇到过同样的问题,我在这里找不到任何可以提供帮助的东西。

标签: python json flask


【解决方案1】:

您在打印时收到了响应 - <Response 55 bytes [200 OK]>,因为 jsonify 返回一个响应对象,其中的标头非常适合浏览器和 API 调用。

如果您需要查看或使用脚本中的有效负载/数据,请使用 json.dumps 或调用响应对象上的数据属性。例如。

return jsonify({'error': 'Error entering user.'}).data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 2020-07-25
    • 2014-11-26
    • 1970-01-01
    • 2021-12-26
    • 2014-04-24
    • 2018-06-26
    相关资源
    最近更新 更多