2012-08-14 18 views
26

Tôi không thể tìm ra cách ép kiểu MIME application/json cho chế độ xem trong Flask. Dưới đây là một cái nhìn đơn giản, tôi đã ném nhau cho các mục đích trình diễn:Bắt buộc áp dụng/json loại MIME trong chế độ xem (Bình)

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

Chuỗi JSON (tổ chức tại biến ret) được thu thập từ các nơi khác (sử dụng thiết bị xuất chuẩn từ một chương trình sử dụng subprocess) vì vậy tôi không thể sử dụng jsonify được cung cấp với Flask.

Tôi đã xem câu hỏi về Stackoverflow "Returning Json" Documentationthis nhưng tôi chưa có bất kỳ may mắn nào cho đến thời điểm này. Tôi đã nhìn xung quanh một lúc bây giờ & sẽ tiếp tục tìm kiếm nhưng tôi nghĩ rằng tôi sẽ hỏi ở đây chỉ trong trường hợp có ai đó gặp phải vấn đề này.

Cảm ơn.


Xem answer below

Giải pháp:

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

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

    return resp 

tôi tìm thấy trang web này hữu ích: Implementing a RESTful Web API with Python & Flask

Trả lời

13

Hình như bạn có thể sử dụng đối tượng đáp ứng trực tiếp.

Hãy xem một trong những ý kiến ​​- Forcing application/json MIME type in a view (Flask)

+1

+1 - Cảm ơn. Tôi đang nghịch với nó bây giờ. –

+12

['make_response'] (http://flask.pocoo.org/docs/api/#flask.Flask.make_response) có lẽ là một lựa chọn tốt hơn trong trường hợp này. Sau đó thiết lập thuộc tính 'mimetype'. 'r = make_response (dữ liệu); r.mimetype = 'application/json'; return r' – soulseekah

+1

Trước đó nên được chuyển thành câu trả lời đúng! –

22

Nếu bạn bạn sử dụng

from flask import jsonify 

và sau đó trong mã của bạn

return jsonify(somedict) 

sau đó jsonify() tự động cài đặt loại mime để 'application/json'

+1

Bạn làm gì cho mảng? –

+0

Tài liệu được khuyến nghị là tạo ra các phương thức tuần tự trên các kiểu dữ liệu của một người, nhưng tôi sử dụng các từ điển đơn giản (tôi nghĩ bạn có nghĩa là theo mảng.) Jsonify() chuyển đổi chúng thành các từ điển JSON. @ahmetalpbalkan –

+0

Không, ý tôi là bạn làm gì để gửi phản hồi mảng JSON? (Giả sử tôi có một mảng Python, tôi sẽ render nó thành mảng JSON bắt đầu bằng '[' và kết thúc bằng ']'. Bạn làm gì sau đó? –

Các vấn đề liên quan