2012-08-14 35 views
26

我無法弄清楚如何在Flask中強制MIME類型application/json。下面是一個簡單的看法,我放在一起進行演示:在視圖中強制應用/ json MIME類型(Flask)

@app.route("/") 
def testView(): 
    ret = '{"data": "JSON string example"}' 
    return ret 

JSON字符串(可變ret舉行)是從其他地方收集(使用標準輸出使用subprocess另一個程序),所以我不能使用jsonify隨Flask提供。

我看了一下"Returning Json" Documentationthis Stackoverflow的問題,但到目前爲止我還沒有任何運氣。我一直在尋找一段時間,現在&將繼續搜索,但認爲我會問在這裏,以防萬一有人遇到這種情況。

謝謝。


answer below

解決辦法:

@app.route("/") 
def testView(): 
    ret = '{"data": "JSON string example"}' 

    resp = Response(response=ret, 
        status=200, 
        mimetype="application/json") 

    return resp 

我發現這個網站有用:Implementing a RESTful Web API with Python & Flask

回答

13

看起來你可以直接使用Response對象。

請參閱評論之一 - Forcing application/json MIME type in a view (Flask)

+1

+1 - 謝謝。我現在擺弄它。 – 2012-08-14 04:40:33

+12

['make_response'](http://flask.pocoo.org/docs/api/#flask.Flask.make_response)在這種情況下可能是更好的選擇。然後設置'mimetype'屬性。 'r = make_response(data); r.mimetype ='application/json';返回r' – soulseekah 2013-09-30 21:36:53

+1

前面應該變成正確答案! – 2014-12-13 21:29:50

22

如果您使用

from flask import jsonify 

,然後在你的代碼

return jsonify(somedict) 

然後jsonify()自動設置MIME類型'application/json'

+1

你對數組做什麼? – 2012-12-09 02:33:37

+0

文檔建議您在自己的數據類型上創建序列化方法,但我使用普通字典(我認爲您的意思是通過數組。)jsonify()將它們很好地轉換爲JSON字典。 @ahmetalpbalkan – 2012-12-09 11:02:52

+0

不,我的意思是你做什麼來發送JSON數組響應? (比方說,我有一個Python數組,我將它作爲JSON數組以''開頭,並以']'結尾,然後你做什麼? – 2012-12-16 08:26:23