前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask 使用json或者jsonify返回json响应数据的方法

Flask 使用json或者jsonify返回json响应数据的方法

作者头像
Devops海洋的渔夫
发布2019-12-02 21:39:25
14.2K0
发布2019-12-02 21:39:25
举报
文章被收录于专栏:Devops专栏Devops专栏

在前后端分离的时代,后端一般返回前端的数据就是json格式的响应数据。 而json格式的响应数据其实实际上就是一个字符串。

要知道Flask如何返回json响应数据,首先就需要知道如何将字典dict转化为json字符串。

使用json库将dict转为json字符串

代码语言:javascript
复制
In [1]: import json

In [2]: data = {"user_name":"libai", "user_pwd": "123456"}

In [3]: type(data)
Out[3]: dict

# 将dict转为json字符串
In [4]: res = json.dumps(data)

In [5]: res
Out[5]: '{"user_name": "libai", "user_pwd": "123456"}'

In [6]: type(res)
Out[6]: str

# 将json字符串转为dict
In [7]: rec = json.loads(res)

In [9]: rec
Out[9]: {'user_name': 'libai', 'user_pwd': '123456'}

In [10]: type(rec)
Out[10]: dict

下面来看看使用json库来返回json数据。

视图函数使用json库返回json响应数据

代码语言:javascript
复制
from flask import Flask, request, abort, make_response

import json

# 实例化app
app = Flask(import_name=__name__)

@app.route('/login', methods=["GET","POST"])
def login():

    data = {
        "user_name": "libai",
        "user_age": 18,
    }

    res_json = json.dumps(data)

    return res_json

if __name__ == '__main__':
    app.run(debug=True)

在浏览器请求如下:

如果单纯直接返回响应消息,Content-Type:text/html 是不正确的,应该改为application/json 才对。

修改响应消息的headers如下:

代码语言:javascript
复制
from flask import Flask, request, abort, make_response

import json

# 实例化app
app = Flask(import_name=__name__)

@app.route('/login', methods=["GET","POST"])
def login():

    data = {
        "user_name": "libai",
        "user_age": 18,
    }

    res_json = json.dumps(data)

    # return 响应体, 状态码, 响应头
    return res_json, 200, {"Content-Type":"application/json"}

if __name__ == '__main__':
    app.run(debug=True)

在浏览器的请求响应如下:

可以看到正常返回json数据了。

但是可以感觉到这样其实挺麻烦的。在Flask框架中有一个jsonify的方法可以将这个过程简化。

使用jsonify来返回json响应数据

代码语言:javascript
复制
from flask import Flask, jsonify

# 实例化app
app = Flask(import_name=__name__)

@app.route('/login', methods=["GET","POST"])
def login():

    data = {
        "user_name": "libai",
        "user_age": 18,
    }

    return jsonify(data)

if __name__ == '__main__':
    app.run(debug=True)

浏览器请求如下:

可以看到,使用jsonify返回json响应数据是最简单的一种方式。

  • 另外jsonify不单单可以将dict转为json响应数据,还可以直接往里面写参数值
代码语言:javascript
复制
jsonify(token=123456, gender=0)

示例如下:

代码语言:javascript
复制
from flask import Flask, jsonify

# 实例化app
app = Flask(import_name=__name__)

@app.route('/login', methods=["GET","POST"])
def login():

    return jsonify(token=123456, gender=0)

if __name__ == '__main__':
    app.run(debug=True)

浏览器请求如下:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用json库将dict转为json字符串
  • 视图函数使用json库返回json响应数据
  • 使用jsonify来返回json响应数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档