You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:07:51