[英]json.dumps vs flask.jsonify
我不確定我是否理解flask.jsonify
方法的目的。 我嘗試從中制作一個 JSON 字符串:
data = {"id": str(album.id), "title": album.title}
但我得到什么用json.dumps
從我用得到不同flask.jsonify
。
json.dumps(data): [{"id": "4ea856fd6506ae0db42702dd", "title": "Business"}]
flask.jsonify(data): {"id":…, "title":…}
顯然我需要得到一個看起來更像json.dumps
返回的結果。 我究竟做錯了什么?
jsonify()
函數返回一個flask.Response()
對象,該對象已經具有適當的內容類型標頭 'application/json' 用於 json 響應。 而json.dumps()
方法只會返回一個編碼字符串,這需要手動添加 MIME 類型標頭。
在此處查看有關jsonify()
函數的更多信息以獲取完整參考。
編輯:另外,我注意到jsonify()
處理 kwargs 或字典,而json.dumps()
還支持列表和其他。
你可以做:
flask.jsonify(**data)
或者
flask.jsonify(id=str(album.id), title=album.title)
這是flask.jsonify()
def jsonify(*args, **kwargs):
if __debug__:
_assert_have_json()
return current_app.response_class(json.dumps(dict(*args, **kwargs),
indent=None if request.is_xhr else 2), mimetype='application/json')
使用的json
模塊simplejson
順序是simplejson
或json
。 current_app
是對Flask()
對象的引用,即您的應用程序。 response_class()
是對Response()
類的引用。
選擇一個或另一個取決於您打算做什么。 根據我的理解:
當您構建 API 時, jsonify會很有用,有人會查詢並期望 json 作為回報。 例如:REST github API 可以使用此方法來回答您的請求。
dumps ,更多是關於將數據/python 對象格式化為 json 並在您的應用程序中處理它。 例如,我需要將一個對象傳遞給我的表示層,其中一些 javascript 將顯示圖形。 您將使用轉儲生成的 Json 提供 javascript。
考慮
data={'fld':'hello'}
現在
jsonify(data)
將產生 {'fld':'hello'} 和
json.dumps(data)
給
"<html><body><p>{'fld':'hello'}</p></body></html>"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.