json.dumps 与 flask.jsonify

2022-01-31 00:00:00 python json flask

问题描述

我不确定我是否理解 flask.jsonify 方法的目的.我尝试从中创建一个 JSON 字符串:

I am not sure I understand the purpose of the flask.jsonify method. I try to make a JSON string from this:

data = {"id": str(album.id), "title": album.title}

但是我使用 json.dumps 得到的结果与使用 flask.jsonify 得到的不同.

but what I get with json.dumps differs from what I get with flask.jsonify.

json.dumps(data): [{"id": "4ea856fd6506ae0db42702dd", "title": "Business"}]
flask.jsonify(data): {"id":…, "title":…}

显然我需要得到一个看起来更像 json.dumps 返回的结果.我做错了什么?

Obviously I need to get a result that looks more like what json.dumps returns. What am I doing wrong?


解决方案

flask 中的 jsonify() 函数返回一个 flask.Response() 对象,该对象已经有了与 json 响应一起使用的适当的内容类型标头application/json".而 json.dumps() 方法只会返回一个编码字符串,这需要手动添加 MIME 类型标头.

The jsonify() function in flask returns a flask.Response() object that already has the appropriate content-type header 'application/json' for use with json responses. Whereas, the json.dumps() method will just return an encoded string, which would require manually adding the MIME type header.

查看更多关于 jsonify() 函数的信息这里 供完整参考.

See more about the jsonify() function here for full reference.

另外,我注意到 jsonify() 处理 kwargs 或字典,而 json.dumps() 还支持列表和其他.

Also, I've noticed that jsonify() handles kwargs or dictionaries, while json.dumps() additionally supports lists and others.

相关文章