Ser*_*rov 245 python json flask
我不确定我是否理解该flask.jsonify方法的目的.我尝试从这里创建一个JSON字符串:
data = {"id": str(album.id), "title": album.title}
Run Code Online (Sandbox Code Playgroud)
但我得到的东西与我所得到的json.dumps不同flask.jsonify.
json.dumps(data): [{"id": "4ea856fd6506ae0db42702dd", "title": "Business"}]
flask.jsonify(data): {"id":…, "title":…}
Run Code Online (Sandbox Code Playgroud)
显然我需要得到一个看起来更像json.dumps返回的结果.我究竟做错了什么?
Ken*_*lke 326
jsonify()flask中的函数返回一个flask.Response()对象,该对象已经具有适当的内容类型标题'application/json',以便与json响应一起使用.然而,该json.dumps()方法只返回一个编码字符串,这需要手动添加MIME类型标题.
有关此jsonify()功能的更多信息,请参阅此处.
编辑:另外,我注意到jsonify()处理kwargs或词典,同时json.dumps()还支持列表和其他.
mik*_*obi 89
你可以做:
flask.jsonify(**data)
Run Code Online (Sandbox Code Playgroud)
要么
flask.jsonify(id=str(album.id), title=album.title)
Run Code Online (Sandbox Code Playgroud)
Mic*_*oka 77
这是 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')
Run Code Online (Sandbox Code Playgroud)
使用的json模块是simplejson或json按此顺序.current_app是Flask()对象的引用,即您的应用程序.response_class()是对Response()班级的参考.
cha*_*iya 33
选择一个或另一个取决于您打算做什么.据我所知:
当你构建一个有人会查询并期望json作为回报的API时,jsonify会很有用.例如:REST github API可以使用此方法来回答您的请求.
dumps,更多的是将数据/ python对象格式化为json并在应用程序内部进行处理.例如,我需要将一个对象传递给我的表示层,其中一些javascript将显示图形.您将使用转储生成的Json提供javascript.