我在Bottle中制作了一个JSON输出API,我想打印JSON。现在,如果我写jsonify
,它仍然会在我的浏览器中打印出没有缩进或换行符(但它会正确打印到我的终端中)。
我的问题基本上就是这个瓶子的版本: Flask Display Json in a Neat Way
但我无法使用答案,因为(据我所知)瓶中没有jsonify
功能。是否有明显的解决方案,或者我应该尝试对Flask的$( "click" )
进行逆向工程?
答案 0 :(得分:1)
谢谢@Felk评论:
将resopnse.content_type
设置为application/json
。
def result():
response.content_type='application/json'
return data
或
def result():
return '<pre>{}</pre>'.format(json.dumps(data,
indent=4, default=json_util.default))
两者都适合你。
答案 1 :(得分:0)
我创建了bottle-json-pretty插件来扩展Bottle进行的现有JSON转储。
我喜欢能够在其他返回实际页面的模板/视图函数中使用我的Bottle JSON / API函数返回的字典。调用json.dumps
或进行包装可以解决此问题,因为它们将返回转储的str
而不是dict
。
使用bottle-json-pretty的示例:
from bottle import Bottle
from bottle_json_pretty import JSONPrettyPlugin
app = Bottle(autojson=False)
app.install(JSONPrettyPlugin(indent=2, pretty_production=True))
@app.get('/')
def bottle_api_test():
return {
'status': 'ok',
'code': 200,
'messages': [],
'result': {
'test': {
'working': True
}
}
}
# You can now have pretty formatted JSON
# and still use the dict in a template/view function
# @app.get('/page')
# @view('index')
# def bottle_index():
# return bottle_api_test()
app.run()