• 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框架中的自定义转换器、重定向和错误捕获。

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

  • 相关阅读:
    HTML5之Canvas绘图(二) ——应用篇之七巧板
    Mock分页
    ant design pro 实战 : 使用 ztree
    echarts 实战 : 怎么写出和自动生成的一样的 tooltip ?
    react实战 : react 与 canvas
    react实战 : react 与 svg
    echarts 踩坑 : 为什么效果出不来?看看有没有正确引入
    react实战 : 用矩阵思想做一个自适应布局容器组件
    echarts 踩坑 : 为什么触摸柱状图的时后柱子不见了?原来是color的锅!
    echarts 实战 : 图表竖着或横着是怎样判定的?
  • 原文地址:https://www.cnblogs.com/mengxinfeng/p/15476671.html
Copyright © 2020-2023  润新知