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

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

  • 相关阅读:
    linux脚本Shell之awk详解(二)
    linux脚本Shell之awk详解
    漫谈计算摄像学 (二):利用光场实现“先拍照后对焦”
    漫谈计算摄像学 (一):直观理解光场(Light Field)
    利用OpenCV检测图像中的长方形画布或纸张并提取图像内容
    2048理论上最高能玩到多少分?
    蛋疼之作:99行代码的2048
    用一个玩具例子说明基于视频的超分辨率重建的基本思想
    [C++]二维数组还是一维数组?
    三维空间中如何寻找和一组给定直线垂直程度最高的直线
  • 原文地址:https://www.cnblogs.com/mengxinfeng/p/15476671.html
Copyright © 2020-2023  润新知