jsonify / pretty-print JSON for Bottle

时间:2015-12-01 20:23:31

标签: python json bottle pretty-print

我在Bottle中制作了一个JSON输出API,我想打印JSON。现在,如果我写jsonify,它仍然会在我的浏览器中打印出没有缩进或换行符(但它会正确打印到我的终端中)。

我的问题基本上就是这个瓶子的版本: Flask Display Json in a Neat Way

但我无法使用答案,因为(据我所知)瓶中没有jsonify功能。是否有明显的解决方案,或者我应该尝试对Flask的$( "click" )进行逆向工程?

2 个答案:

答案 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()