Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python jsonify/pretty打印瓶用JSON_Python_Json_Bottle_Pretty Print - Fatal编程技术网

Python jsonify/pretty打印瓶用JSON

Python jsonify/pretty打印瓶用JSON,python,json,bottle,pretty-print,Python,Json,Bottle,Pretty Print,我正在瓶子里制作一个JSON输出API,我想漂亮地打印JSON。现在,如果我写返回json.dumps(data,indent=4,default=json\u util.default),它仍然会在浏览器中打印它,没有缩进或换行(但它确实正确地打印到我的终端) 我的问题基本上是这个瓶子的版本: 但我不能使用这个答案,因为(据我所知)瓶子里没有jsonify函数。是否有一个明显的解决方案,或者我应该尝试对Flask的jsonify进行反向工程?谢谢@Felk评论: 将resopnse.cont

我正在瓶子里制作一个JSON输出API,我想漂亮地打印JSON。现在,如果我写
返回json.dumps(data,indent=4,default=json\u util.default)
,它仍然会在浏览器中打印它,没有缩进或换行(但它确实正确地打印到我的终端)

我的问题基本上是这个瓶子的版本:

但我不能使用这个答案,因为(据我所知)瓶子里没有
jsonify
函数。是否有一个明显的解决方案,或者我应该尝试对Flask的
jsonify进行反向工程?

谢谢@Felk评论: 将
resopnse.content\u type
设置为
application/json

def result():
    response.content_type='application/json'
    return data

def result():
返回{}.format(json.dumps)(数据,
缩进=4,默认值=json(使用默认值)
这两种方法都适用于您。

我创建了这个插件,以扩展由瓶子完成的现有JSON转储

我喜欢在其他返回实际页面的模板/视图函数中使用我的JSON/API函数返回的字典。调用
json.dumps
或制作包装会破坏这一点,因为它们将返回转储的
str
,而不是
dict

使用瓶子json的示例:

从瓶子导入瓶子
从瓶子中输入JSONPrettyPlugin
app=瓶子(autojson=False)
安装(JSONPrettyPlugin(indent=2,pretty\u production=True))
@app.get(“/”)
def瓶api测试()
返回{
“状态”:“确定”,
“代码”:200,
“消息”:[],
“结果”:{
“测试”:{
“工作”:正确
}
}
}
#现在,您可以使用非常格式化的JSON
#并且仍然在模板/视图函数中使用dict
#@app.get(“/page”)
#@view('索引')
#def瓶_索引():
#返回瓶\u api\u测试()
app.run()

默认情况下,浏览器可能会将文本解释为HTML,不会打印
\n
及其连续空格。要么将JSON包装在
中,要么将内容类型设置为
application/JSON
是的,设置
响应。内容类型是一种方法。伙计,我知道手动设置内容类型显然是不合适的。谢谢如果有人转移到一个答案,我会接受它。
def result():
    return '<pre>{}</pre>'.format(json.dumps(data, 
            indent=4, default=json_util.default))