如何打印从Flask接收到的JSON对象?
我的Flask网页应用返回了jsonify(data),看起来运行得挺正常的(日志记录也没问题)。
这个HTML页面里有:
$.getJSON("http://127.0.0.1:5000/").done(function (data) {
console.log(data);
});
但是什么都没有显示出来。我尝试了不同的方法,最接近的结果是像[object object]这样的东西。
Python代码大概是这样的:
@app.route("/")
def run():
rows = []
# code to populate rows with values from a db
data = {'rows' : rows}
print json.dumps(data)
return jsonify(data)
json.dumps()打印出{"rows": [[[1.0, 2.0]]]}。
2 个回答
0
首先,最好在服务器端打印出生成的JSON字符串,以确保它是正确生成的。
然后,在客户端,你可以在JavaScript代码中设置一个断点,查看从服务器接收到的值,以确保接收到的数据是正确的。
如果你真的想用console.log打印出来,可以使用下面提到的JSON.stringify方法。
试试
$.getJSON("http://127.0.0.1:5000").done(function (data) {
// indentation level = 2
var str = JSON.stringify(data, undefined, 2);
console.log(str);
});
有关JSON.stringify方法的详细说明,请参考 这个链接。
1
抱歉,回复得有点晚。
我觉得问题在于你试图对 getJSON 调用的 "done" 事件做出响应。getJSON 调用其实是对 "ajax" 的一种封装,但我敢打赌它会覆盖默认函数中传入的 "done" 回调。你可以这样使用 getJSON:
$.getJSON("http://127.0.0.1:5000", function(data) {
var str = JSON.stringify(data, undefined, 2);
console.log(str);
});