Flask Jsonify 详解

一、序言

1、Flask后端提供了jsonify方法供用户处理返回的序列化Json数据
2、Python自带的json库中有dumps方法可以序列化json对象

二、分析
Flask框架的Jsonify直接返回包含Json格式数据响应的方法,服务端视图函数根据请求参数返回Json格式的数据到客户端。

复制代码
from flask import Flask
from flask import jsonify
from flask import Response

app = Flask(__name__)

# 接收参数,并返回json数据
@app.route('/hello/<name>/<words>',methods=['GET'])
def hello(name,words):
# return json.dumps({'name':name,'words':words})
# return json_str,200,{"Content-Type":"application/json"}
  return jsonify({'name':name,'words':words})#也可以传入key=value形式的参数,如jsonify(name=name,words=words)

if __name__ == '__main__':
  app.run()
复制代码

用chrome浏览器访问得到的页面如下图:

PS:直接返回Json.dumps的结果是可行的,因为Flask会判断并使用make_response方法自动构造出响应,只不过响应头各个字段是默认的。

三、jsonify
这两种方法都可以将json数据传到前端,注意浏览器相应体中的内容类型
1、将我们传入的json形式数据序列化成为json字符串,作为响应的body,
2、设置响应的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')

1、jsonify也是使用了json.dumps来序列化json形式的数据,作为响应正文返回。indent表示json格式化的缩进,若是Ajax请求则不缩进,否则缩进2格。
2、jsonify响应的Content-Type字段值为application/json,而使用json.dumps时该字段值为text/html。Content-Type决定了接收数据的一方如何处理数据,如果是application/json则可以直接当做json对象处理,若是text/html还要将文本对象转化为json对象再做处理。

3、如果返回的Json数据支持中文显示,需要配置编码,例如: app.config['JSON_AS_ASCII'] = False

作者:三淼

出处:https://www.cnblogs.com/tamya/p/16632890.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   三淼  阅读(4062)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示