Flask jsonify将结果打印到新行上

4

第一次使用Flask,我创建了一个非常基本的应用程序,并尝试打印推荐系统的结果。 第一组代码来自我的Python函数(print_most_similar),它正在创建格式化字符串,希望将每个REC打印在新行上。 第二部分代码显然是我的Flask路由。 您可以看到Flask部分调用该函数,因此返回“y”。 我认为jsonify不会接受\n字符。 我尝试在字符串格式化中仅使用'\n',但它只是显示为字符串。 '\t'也是如此。

for k in range(len(sugg)):
    x = str("REC {}: {}\\n".format(k+1, sugg[k]))
    y += x
return y

@app.route("/getrecomm",methods=['GET','POST'])
def getrecomm():
    restname = request.args.get('restname', type=str)
    number = request.args.get('number', type=int)
    i = getBusIndex(restname, names)
return make_response(jsonify(result=(print_most_similar(rating, names, i, number))),200)

目前,结果的输出如下所示: REC 1: Harbor House Cafe & Lounge REC 2: Starbucks REC 3: McDonald's REC 4: Taco Bell REC 5: Panda Express
我希望它们输出如下所示: REC 1: Harbor House Cafe & Lounge REC 2: Starbucks REC 3: McDonald's REC 4: Taco Bell REC 5: Panda Express
我使用的是Python 3,如果您有任何建议,将不胜感激!

你尝试过记录json化的内容吗?在返回之前,\n字符是否包含在其中? - perennial_
2个回答

2

摘要

  • 答案: <br>
  • 可选方案: JSONView Chrome浏览器扩展程序

唯一一个给我良好结果的是<br>:

例子

from flask import Flask, jsonify

app = Flask(__name__)

tasks = [
    {
        '<br>id': 1,
        'title': u'Buy groceries',
        'description': u'Milk, Cheese, Pizza, Fruit, Tylenol', 
        'done': False
    },
    {
        '<br>id': 2,
        'title': u'Learn Python',
        'description': u'Need to find a good Python tutorial on the web', 
        'done': False
    }
]

@app.route('/todo/api/v1.0/tasks', methods=['GET'])
def get_tasks():
    return jsonify({'tasks': tasks})

if __name__ == '__main__':
    app.run(debug=True)

在您的浏览器中,<br>字符将被渲染为html并产生一个新行。
结果:
"creates" new lines in json
Jsonify无法帮助您,因为它将值(整数、布尔值、浮点数等)作为字符串处理,并避免特殊字符,例如\n\t等。
最后,如果您只想以华丽的方式在浏览器中可视化json文件,则可以使用JSONView。这是一个Chrome扩展程序,可以以更易理解的方式呈现Json文件,如下所示。 使用JSONView进行呈现

1
对我来说不起作用:在浏览器中仍然看到<br>。 :( - Mikhail_Sam
@Mikhail_Sam,你能分享一下你的脚本/代码吗? - Yor Jaggy
some_var = "一些随机文本<br>" res = f"成功连接到Postgres服务器:<br> {some_var}<br>" res += res "连接已关闭" return jsonify(res)在浏览器中仍然看到没有换行的<br> - Mikhail_Sam
是的,我也遇到过换行符 <br>。 - undefined
我创建了一个非常小的文件"401.html",并在Python中将字符串传递给它,就像这样return render_template('401.html', message_data=html_string), 401。在401.html文件中,我有{{message_data | safe }} - undefined

0

终于我找到了解决方案。

看起来jsonify()函数不适用于“换行符”情况。

你可以使用Response()

from flask import Flask, Response

statement = """
        try
        try
        try
        """
@app.route('/**/api/v1/**', methods=['GET'])
def get_statement():
    return Response(statement, mimetype='text/plain')

我也是一个flask的新学习者,Response()函数在我的应用程序上运行良好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接