如何打印从Flask接收到的JSON对象?

0 投票
2 回答
2131 浏览
提问于 2025-04-17 23:13

我的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);
});

撰写回答