我正在使用 Quart(本质上是 Flask for HTTP/2)来提供一些 JSON 内容。JSON 内容以漂亮的打印格式驻留在 templates/ 目录中,例如
例子.json
{
"key1": "value1",
"list1": [
{
"key2": "{{ keyword_arg2 or "value2"}}",
"list2": [
{
"key3": "value3 with spaces",
"key4": "value4"
}
]
}
]
}
如果我只是return render_template('example.json')
,它将保留原始文件中的所有空格。我想返回一个紧凑的形式,即
{"key1":"value1","list1":[{"key2":"value2","list2":[{"key3":"value3 with spaces","key4":"value4"}]}]}
有没有一种好方法可以做到这一点(理想情况下也可以将内容类型设置为应用程序/json)。到目前为止,我想出的是:
body = await render_template('example.json')
body = body.replace('\n', '')
body = ''.join(body.split())
r = await make_response(body)
r.headers.set('Content-type', 'application/json')
return r
但它不能很好地处理值中的空格(这个版本完全删除了它们)。Quart中的jsonify
函数自动将Content-type设置为application/json,但是对render_template返回的字符串似乎并没有很好的操作,除非我用错了。