如何读取Python Flask的Jsonify响应对象

5

我有一个返回Flask jsonify对象的python函数。当我尝试使用get_json()或者json()读取这个返回的json对象时,会抛出错误。下面是我的代码:

from flask import jsonify

def funct1(par1):
    if par1 == 'Hi':
       return jsonify(result=1,msg='Hello')
    else:
       return jsonify(result=0,msg='Sorry')

def func2():
    response = funct1('Hi')
    rsp_js = response.get_json() # This throws error
    print(rsp_js)

当我执行以上代码时,会出现错误:Response object has no attribute get_json。我也尝试了json(),但是得到了相同的错误。那么,我该如何读取返回的jsonify对象呢? 注意:我的flask版本是0.12.2。

你使用的 Flask 版本是哪个?get_json 方法只在 Flask 1.0 及以上版本的响应对象中存在,而在 0.12 版本中不可用。 - Matthew Story
@MatthewStory 我使用的是 Flask 版本 0.12.2,请问该版本的语法是什么? - user2916886
在这里查看我的更多答案。 - Matthew Story
1个回答

9

get_json在Flask中直到版本1.0之前才被添加到响应对象中。在以前的版本中,您需要使用get_data

import json
json.loads(response.get_data().decode("utf-8"))

尽管如此,我要警告你不要直接从其他函数(除了测试)调用路由方法,也不要从非路由方法中返回响应对象。

如果您试图测试此方法,可以考虑使用test_client

with app.test_client() as client:
    json.loads(client.get("the/url").get_data().decode("utf-8"))
    # ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接