精缩JSON在瓶中的jsonify()
瓶提供了方便jsonify()
函数,它返回从Python的变量JSON对象:精缩JSON在瓶中的jsonify()
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为符合JSON的字符串)。
这缩进格式是一种浪费,对长期输出,我更喜欢缩小的版本:
{"1": 1, "0": 0, "3": 9, "2": 4, "4": 16}
我怎样才能获得JSON从瓶的jsonify()
缩小的版本?
除了对JSONIFY_PRETTYPRINT_REGULAR
对方的回答,您还可以得到延长瓶的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
和key_separator
尾随的空间每个,所以通过像这样覆盖它们,可以从输出中删除这些空格。
(严格地说,我想你可以只设置这些值的默认JSONEncoder
但我需要这种方法,因为我不得不超负荷JSONEncoder.default()
其他原因反正)
很好的感觉。谢谢。 – 2015-10-10 05:28:06
不知道这是否适用于旧版本 - 但目前的版本并不需要。从flask doc(http://flask.pocoo.org/docs/0.12/api/):如果未请求使用X-Requested-With:XMLHttpRequest来简化调试,则该函数的响应将被打印出来,除非JSONIFY_PRETTYPRINT_REGULAR配置参数设置为false。压缩(不漂亮)格式**当前意味着没有缩进,分隔符后没有空格**。 – lynnard 2017-03-30 09:40:41
只需使用['json.dumps'(HTTPS: //docs.python.org/2/library/json.html#json.dumps)从标准库吗? (尽管这不是严格意义上的*缩小*,只是不太漂亮)。 – 2014-09-10 19:28:47