json.dumps vs flask.jsonify
我不确定我了解flask.jsonify
方法的用途。 我尝试从这个jsonstring:
data = {"id": str(album.id), "title": album.title}
但是我得到的json.dumps
和json.dumps
不同。
json.dumps(data): [{"id": "4ea856fd6506ae0db42702dd", "title": "Business"}] flask.jsonify(data): {"id":…, "title":…}
显然我需要得到更像是什么json.dumps
返回的结果。 我究竟做错了什么?
jsonify()
函数返回已经具有合适的内容types头“application / json”的flask.Response()
对象用于json响应,而json.dumps()
将返回一个编码的string,需要手动添加MIMEtypes标题。
请参阅有关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
或json
的顺序。 current_app
是引用Flask()
对象,即您的应用程序。 response_class()
是对Response()
类的引用。
一个或另一个的select取决于你打算做什么。 从我的理解来看:
-
当你创build一个有人会查询和期待json的API时, jsonify会很有用。 例如:REST github API可以使用这个方法来回答你的请求。
-
转储 ,更关于将数据/ python对象格式化到json中,并在您的应用程序中进行处理。 例如,我需要传递一个对象到我的表示层,其中一些JavaScript将显示graphics。 您将使用由转储生成的Json来提供JavaScript。