Flask 的 jsonify() 中缩小的 JSON

2024-04-13

Flask 提供了方便的jsonify()函数,它从 Python 变量返回 JSON 对象:

from flask import Flask, jsonify
app = Flask(__name__)

@app.route("/")
def json_hello():
    return jsonify({x:x*x for x in range(5)}), 200

if __name__ == "__main__":
    app.run(debug=True)

返回:

{
  "0": 0, 
  "1": 1, 
  "2": 4, 
  "3": 9, 
  "4": 16
}

(PS - 请注意从 int 到 string 的转换以符合 JSON)。

这种缩进格式对于长输出来说是浪费,我更喜欢缩小版本:

{"1": 1, "0": 0, "3": 9, "2": 4, "4": 16}

如何从 Flask 获取缩小版本的 JSONjsonify()?


除了其他答案JSONIFY_PRETTYPRINT_REGULAR,您还可以通过扩展 Flask 的 jsonencoder 来消除列表元素之间的空格,如下所示:

from flask import Flask
from flask.json import JSONEncoder

class MiniJSONEncoder(JSONEncoder):
    """Minify JSON output."""
    item_separator = ','
    key_separator = ':'

app = Flask(__name__)
app.json_encoder = MiniJSONEncoder
app.config['JSONIFY_PRETTYPRINT_REGULAR'] = False

默认值item_separator and key_separator每个都有一个尾随空格,因此通过像这样覆盖它们,您可以从输出中删除这些空格。

(严格来说,我想你可以将这些值设置为默认值JSONEncoder但我需要这种方法,因为我不得不超载JSONEncoder.default()无论如何,出于其他原因)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask 的 jsonify() 中缩小的 JSON 的相关文章

随机推荐