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

时间:2014-03-21 00:37:26

标签: javascript python html json web-services

My Flask webapp返回jsonify(数据)并且似乎正常工作(正确记录)。

HTML页面包含:

 $.getJSON("http://127.0.0.1:5000/").done(function (data) {
  console.log(data);
  });

并且没有打印任何内容。我尝试了不同的方法,而我得到的最接近的是[对象对象]。

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()打印{"行":[[[1.0,2.0]]]}

2 个答案:

答案 0 :(得分: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);
});

答案 1 :(得分: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的详细说明,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify