Flask 2.2.0后PRETTYPRINT_REGULAR已弃用,如何实现JSON响应格式化?
Flask 2.2.0 弃用 PRETTYPRINT_REGULAR 后,如何实现 jsonify 响应格式化输出?
Flask 2.2.0 版本发布说明提到 PRETTYPRINT_REGULAR 配置已被弃用,但未给出替代方案;变更日志指向对应的拉取请求,同样未说明启用方式。按照文档示例尝试设置 app.json.prettyprint_regular 属性却无效,现寻求实现 flask.jsonify 响应格式化输出的方法。
解决方法
从 Flask 2.2.0 开始,PRETTYPRINT_REGULAR 被移除,格式化逻辑整合到了应用的 JSON 处理对象中,以下是两种可行方案:
1. 全局开启常规请求的 JSON 格式化
在应用初始化后,配置 app.json 的相关属性,需同时指定缩进参数才能生效:
from flask import Flask, jsonify app = Flask(__name__) # 配置全局 JSON 格式化:缩进2空格、按键排序、开启常规请求格式化 app.json.indent = 2 app.json.sort_keys = True app.json.prettyprint_regular = True @app.route('/demo') def demo(): return jsonify({ "framework": "Flask", "version": "2.2.0", "functions": ["route", "jsonify"] })
注意:prettyprint_regular 作用于非调试模式下的常规请求;调试模式下,Flask 默认会自动格式化 JSON 响应。
2. 针对单个请求手动设置格式
如果不需要全局启用,可在单个路由中手动修改响应的 JSON 内容:
from flask import Flask, jsonify app = Flask(__name__) @app.route('/demo') def demo(): data = {"framework": "Flask", "version": "2.2.0"} # 手动生成格式化后的 JSON 字符串并设置到响应中 formatted_json = app.json.dumps(data, indent=2, sort_keys=True) response = jsonify() response.set_data(formatted_json) return response
关键提示
之前的 PRETTYPRINT_REGULAR 配置对应现在的 app.json.prettyprint_regular,但必须搭配 app.json.indent 使用——若未指定缩进值,即使开启 prettyprint_regular,也不会触发格式化效果。
内容的提问来源于stack exchange,提问作者mbigras
相关产品推荐
相关产品推荐

