问题:json.dumps与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
返回结果的结果。我究竟做错了什么?
回答 0
jsonify()
flask中的函数返回一个flask.Response()
对象,该对象已经具有用于json响应的适当的内容类型标头’application / json’。而该json.dumps()
方法将仅返回编码后的字符串,这将需要手动添加MIME类型标头。
查看更多有关该jsonify()
功能在这里完全参考。
编辑:另外,我注意到它可以jsonify()
处理kwarg或字典,同时json.dumps()
还支持列表和其他列表。
回答 1
你可以做:
flask.jsonify(**data)
要么
flask.jsonify(id=str(album.id), title=album.title)
回答 2
这是 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
或json
顺序相同。current_app
是对Flask()
对象(即您的应用程序)的引用。response_class()
是对该Response()
类的引用。
回答 3
一个或另一个的选择取决于您打算做什么。据我了解:
当您构建一个有人查询并期望json作为回报的API时,jsonify会很有用。例如:REST github API可以使用此方法来回答您的请求。
dumps,更多关于将数据/ python对象格式化为json并在您的应用程序中进行处理。例如,我需要将一个对象传递给我的表示层,其中一些javascript将显示图形。您将使用转储生成的Json喂javascript。
回答 4
考虑
data={'fld':'hello'}
现在
jsonify(data)
将产生{‘fld’:’hello’}并且
json.dumps(data)
给
"<html><body><p>{'fld':'hello'}</p></body></html>"
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。