当前位置: 首页 > 面试题库 >

以整洁的方式显示从Flask返回的JSON

王扬
2023-03-14
问题内容

我正在使用Flask创建一个API,并具有以下代码

@app.route('/<major>/')
def major_res(major):
    course_list = list(client.db.course_col.find({"major": (major.encode("utf8", "ignore").upper())}))
    return json.dumps(course_list, sort_keys=True, indent=4, default=json_util.default)

在浏览/csci/器中查看时,输出如下所示:

[{ "course": "CSCI052", "description": "Fundamentals of Computer Science. A solid foundation in functional programming, procedural and data abstraction, recursion and problem-solving. Applications to key areas of computer science, including algorithms and complexity, computer architecture and organization, programming languages, finite automata and computability. This course serves the same role as HM 60 as a prerequisite for upper-division computer science courses at any of the Claremont Colleges. Prerequisite: 51.", "instructor": "Bull, Everett L.,, Jr.", "name": " Fundamentals of Computer Science", "number": 52, "school": "PO" }]

如何返回此字典,以便每个键和值都在各自的行上?


问题答案:

Flask提供jsonify()了以下便利:

from flask import jsonify

@app.route("/<major>/")
def major_res(major):
    course_list = list(client.db.course_col.find({"major": major.upper()}))
    return flask.jsonify(**course_list)

这将返回args jsonify作为JSON表示形式,并且与你的代码不同,它将发送适当的Content-Type标头:application/json。注意文档对格式的看法:

如果将JSONIFY_PRETTYPRINT_REGULARconfig参数设置为True或Flask应用程序在调试模式下运行,则该函数的响应将很漂亮地打印出来。压缩(不太漂亮)格式当前表示分隔符后没有缩进和空格。

当不在调试模式下时,响应将接收非漂亮的JSON。这不应该成为问题,因为不需要对用于JavaScript的JSON进行格式化(这只是通过网络发送的额外数据),并且大多数工具格式都是自己接收JSON的。

如果你仍然想使用json.dumps(),可以通过返回Response with 来发送正确的mimetype current_app.response_class()

from flask import json, current_app

@app.route("/<major>/")
def major_res(major):
    course_list = list(client.db.course_col.find({"major": major.upper() }))
    return current_app.response_class(json.dumps(course_list), mimetype="application/json")


 类似资料:
  • 我们使用基于mod-wsgi的主机。我遵循了以下URL中给出的步骤: http://flask.pocoo.org/docs/0.10/deploying/mod_wsgi/ 编辑1:最新网址:http://flask.pocoo.org/docs/1.0/deploying/mod_wsgi/ Apache错误日志显示以下消息: WSGI文件看起来像这样: 文件夹树结构如下所示: 有人能帮我解决

  • 我有一个关于显示void类型的返回值的问题。因此trimLines是一个void类型的方法。我不明白如何显示void类型的方法,因为该方法没有返回任何东西,所以没有任何东西可以显示。由于采用字符串类型,这将导致错误。

  • 问题内容: 在某些情况下,我具有NewtonSoft JSON.NET,在控制器中,我只是从控制器中返回Jobject,一切都很好。 但是我遇到的情况是,我从另一个服务中获取了一些原始JSON,并且需要从我的webAPI中返回它。在这种情况下,我不能使用NewtonSOft,但是如果可以的话,我将根据字符串创建一个JOBJECT(这似乎是不必要的处理开销),并返回该值,这一切对世界都很好。 但是,

  • 我通过jQuery ajax调用一个Web服务。在浏览器中检查时,从服务返回的响应似乎很好,如下所示: 当我通过jQueryAjax调用得到相同的结果时,它显示为未定义。 此处“数据”显示为对象文档, “cont”显示为未定义 当我试图提醒“jqxhr”参数时,它显示了来自web服务的所有数据,并且状态为OK。我在大多数帖子和博客上都试过了,但都找不到哪里出了问题。请帮忙。

  • 问题内容: 我有一个函数,可使用Pandas分析CSV文件并生成带有摘要信息的字典。我想从Flask视图返回结果作为响应。如何返回JSON响应? 问题答案: 将摘要数据传递给该函数,该函数返回JSON响应。 从Flask 0.11开始,你可以将任何JSON可序列化的类型(不仅是dict)传递为顶级对象。

  • 问题内容: 我将用户带到单击按钮的页面上。此页面是 UITableViewController 。 现在,如果用户点击一个单元格,我想将他推回到上一页。 我想到了类似的东西,但这似乎是个坏主意。 正确的方法是什么? 问题答案: 斯威夫特3: 如果您想回到上一个视图控制器 如果要返回到根视图控制器