2015-04-05 62 views
0

我有一個簡單的函數,它應該返回JSON。由Flask返回空JSON

@app.route('/storage/experiments', methods=['GET']) 
def get_experiments(): 
    if not request.json: 
     abort(400) 
    experiments = db['experiments'] 
    cursor = experiments.find(request.get_json()) 
    print(dumps(cursor)) 
    resp = Response(response=dumps(cursor), 
    status=200, \ 
    mimetype="application/json") 
    return resp 

打印(轉儲(光標))示出了

[{"current": "11", "date": "12.12.2001", "_id": {"$oid": "551c7b642349c517f5fa5223"}, "name": "xaxa", "voltage": "34"}]

但返回空方括號[]

+1

同時創造自己的Response對象提供更多的靈活性,你試圖簡單地返回jsonify(轉儲(光標))? – SimplicityGuy 2015-04-05 03:17:08

+0

是的,我試着jsonify(轉儲(光標))返回500錯誤, jsonify(list(cursor))return {}, jsonify(cursor)return {}。 我沒有更多的變體 – Alexander1 2015-04-05 12:21:02

+0

只是一個快速猜測,但它是否工作,如果您刪除/註釋掉打印語句? – 2015-04-05 12:41:45

回答

0

我想這是因爲你的數據庫光標(我不知道你使用的是什麼數據庫框架,sqlalchemy?)指向你想返回數據集的末尾,因爲你的print() -statement已經在迭代超過它。它應該與此代碼時,你只是註釋掉print()聲明的工作,因爲我看不到這個代碼的任何其他錯誤:

@app.route('/storage/experiments', methods=['GET']) 
def get_experiments(): 
    if not request.json: 
     abort(400) 
    experiments = db['experiments'] 
    cursor = experiments.find(request.get_json()) 
    #print(dumps(cursor)) 
    resp = Response(response=dumps(cursor), 
    status=200, \ 
    mimetype="application/json") 
    return resp 
+0

謝謝。它正在工作。如此愚蠢的錯誤( – Alexander1 2015-04-05 13:00:58

0

可以使用jsonify函數從燒瓶模塊。

編輯 Chrisitian是對的我沒有注意到你正在使用一個列表。無論如何,這裏是我寫的一個裝飾器,以解決這個問題:Json decorator。希望這可以幫助。

+0

'jsonify'只適用於字典,他試圖序列化一個列表 – 2015-04-05 12:38:08