flask中使用jsonify和json.dumps的区别详解编程语言
一、实验
python的flask框架为用户提供了直接返回包含json格式数据响应的方法,即jsonify,在开发中会经常用到。如下一段简单的flask后端代码,服务端视图函数根据请求参数返回json格式的数据到客户端。
from flask import Flask from flask import jsonify from flask import Response
def hello(name,words): return jsonify({name:name,words:words})#也可以传入key=value形式的参数,如jsonify(name=name,words=words)PS:直接返回json.dumps的结果是可行的,因为flask会判断并使用make_response方法自动构造出响应,只不过响应头各个字段是默认的。若要自定义响应字段,则可以使用make_response或Response自行构造响应。用chrome访问的响应页面如下图。
二、分析
1.Content-Type有区别
jsonify的作用实际上就是将我们传入的json形式数据序列化成为json字符串,作为响应的body,并且设置响应的Content-Type为application/json,构造出响应返回至客户端。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)2.接受参数有区别
jsonify可以接受和python中的dict构造器同样的参数,如下图。
而json.dumps比jsonify可以多接受list类型和一些其他类型的参数。但我试了一下,形式为key1=value1,[key2=value2, ]这样的参数是不行的,会报出“TypeError: dumps() takes exactly 1 argument (0 given)”这一错误,而jsonify不会报错并能正常返回数据。
最后,我们可以使用flask中的make_response方法或者直接通过Response类,通过设置mimetype参数来达到和使用jsonify差不多的效果,但少写点代码何乐而不为呢?况且简洁一点更不容易出错,参数越多调试和维护就越麻烦。当然,使用哪个并不是绝对的,必要时要根据前端的数据处理方式来决定。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/17088.html
cjavapython
相关文章
- json_decode的结果是null
- PHP json_encode float
- java字符串转换为json对象6_Json对象与Json字符串的转化、JSON字符串与Java对象的转换…
- 【笔记php】如何使用PHP从JSON提取数据?
- Mysql使用函数json_extract处理Json类型数据的方法实例
- 在Struts2中使用JSON AJAX详解编程语言
- Oracle 视图 USER_JSON_DATAGUIDES 官方解释,作用,如何使用详细说明
- MySQL支持JSON格式:优势何在?(mysql的json格式)
- 数据MySQL轻松操作JSON数据(mysql取json)
- Linux 优雅解析JSON文件(linux解析json)
- MySQL玩转JSON:实现轻松的数据存储和处理(mysql处理json)
- 格式MySQL中存储JSON数据的最佳实践(mysql存储json)
- 从JSON中读取数据存入MySQL数据库(json存入mysql)
- 使用Oracle解析JSON数据(oracle解析json)
- 如何在MySQL中实现JSON缩进(mysql中json缩进)
- MySQL中使用JSON提取值(mysql中json取值)
- MySQL中使用JSON格式存储数据(mysql中json)
- 破解Oracle数据库之路从JSON到Oracle的导入(json导入oracle)
- JSON入门指南想了解json的朋友可以看下
- Android中使用Gson解析JSON数据的两种方法