flask学习记录03-json数据类型的接收、转换和返回

感谢关注测试开发萌货,我是测试小孟,快跟小孟一起来复习/学习flask框架吧~

图片

今天主要分享json数据格式,核心如下:

  1.json.loads将json转换为字典  
  2.json.dumps将字典转换为json  
  3.jsonify将字典转换为json  
  4.解决浏览器中json数据,中文无法展示的问题

json介绍

json其实就是一个类似于python中字典的字符串,用于浏览器和服务器进行数据传输的一种数据格式

json在项目中的使用

1.接收json,并通过json.loads处理为字典,方便后端处理

from flask import Flask
import json

app = Flask(__name__)

@app.route('/json2')
def demo2():
    json_demo = {"age": 10, "name": "meng", "area": "CHN"}
    # dumps将json转换为字典
    result=json.loads(json_demo)
    return result

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


可以通过调试看到result已经变为dict字典数据类型

图片

2.前端处理数据大多数都是需要json类型的数据,这里通过json.dumps方法将字典转换为json数据类型返回给前端

from flask import Flask
import json

app = Flask(__name__)

@app.route('/json')
def demo1():
    json_dict = {"age":10,"name":"meng","area":"CHN"}
    # dumps将字典转换为json
    result=json.dumps(json_dict,ensure_ascii=False)
    print(type(result))
    return result

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

通过调试可以看到已经转换为json类型的字符串

图片

还可以通过flask框架中的jsonify将字典类型的数据转化为json返回给前端

from flask import Flask
import json

app = Flask(__name__)

@app.route('/json2')
def demo2():
    json_demo = {"age": 10, "name": "meng", "area": "CHN"}
    # jsonify将字典转为json,并返回给前端content-type:application/json
    return jsonify(json_demo)

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

返回json类型字符串,请求头默认设置content-type:application/json

图片

中间遇到过一个问题:浏览器中json数据,中文无法展示。默认展示的是unicode格式,尝试通过在json.loads方法中设置encoding=‘utf-8’,亲身试了下是不行的,如下图所示

图片

后来终于找到了答案,在app配置中将JSON_AS_ASCII设置为False,立马OK

from flask import Flask
import json

app = Flask(__name__)

# 解决浏览器中json数据,中文无法展示的问题
app.config['JSON_AS_ASCII']=False


@app.route('/json2')
def demo2():
    json_demo = {"age": 10, "name": "meng", "area": "上海"}
    # jsonify将字典转为json,并返回给前端content-type:application/json
    return jsonify(json_demo)

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

输出如下

图片

好了,本次分享到这里,下一节会通过BaseConveter的源码,复习flask框架中的自定义转换器、重定向和错误捕获。

欢迎关注微信公众号【测试开发萌货】,查看更多测试开发干货~

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦途的测开笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值