jsonify/pretty-print JSON 瓶

jsonify/pretty-print JSON for Bottle

我正在 Bottle 中制作一个 JSON 输出 API,我想漂亮地打印 JSON。现在,如果我写 return json.dumps(data, indent=4, default=json_util.default),它仍然会在没有缩进或换行的情况下将其打印到我的浏览器中(但它确实会正确地打印到我的终端中)。

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

但我不能使用答案,因为(据我所知)Bottle 中没有 jsonify 函数。有没有明显的解决方案,或者我应该尝试对 Flask 的 jsonify?

进行逆向工程

感谢@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))

两者都适合你。

我创建了 bottle-json-pretty 插件来扩展 Bottle 完成的现有 JSON 转储。

我喜欢能够在 return 实际页面的其他 template/view 功能中使用由我的 Bottle JSON/API 功能编辑的词典 return。调用 json.dumps 或制作包装器会破坏此操作,因为它们会 return 转储 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()