IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Flask入门学习(七):返回json数据给前端

    52txr发表于 2024-07-20 16:43:00
    love 0

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于在客户端和服务器之间传输结构化的数据。在Flask中返回JSON数据给前端有以下几个原因:轻量和易于解析、跨平台兼容性、结构化数据、与JavaScript的天然兼容性以及标准化。方案一使用make_response和json.dumps将数据转换为JSON格式并设置响应类型为'application/json';方案二使用jsonify函数简化了JSON转换过程,但需要设置JSON_AS_ASCII配置项以防止中文被转换为ASCII编码。

    什么是json

    JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,常用于在客户端和服务器之间传输结构化的数据。

    在Flask中返回JSON数据给前端有以下几个原因:

    1. 轻量和易于解析:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人类阅读和编写,也易于机器解析和生成。
    2. 跨平台兼容性:JSON格式广泛支持并且独立于编程语言,这意味着无论前端使用什么技术栈(如JavaScript、React、Angular等),都能方便地解析和处理JSON数据。
    3. 结构化数据:JSON能够很好地表示复杂的结构化数据,包括嵌套对象和数组,这使得它特别适合于Web API的数据交换。
    4. 与JavaScript的天然兼容性:JSON是JavaScript的一个子集,JavaScript可以天然地解析和生成JSON数据,这使得前端开发非常方便。
    5. 标准化:使用JSON作为数据交换格式是一种标准化的做法,许多前后端框架和库都对JSON有良好的支持。

    方案一

    导入库

    from flask import Flask, make_response, json

    将数据转化为json

    from flask import Flask, make_response, json
    
    app = Flask(__name__)
    
    @app.route('/index', methods=['GET', 'POST'])
    def index():
        # 重定向到下面的hello函数
        # 定义一个字典
        date = {
            'name': "zhangsan张三"
        }
        # ensure_ascii=False表示不使用ascii编码,防止把中文转换了
        response = make_response(json.dumps(date, ensure_ascii=False))
        # 将字典转换为json格式
        response.mimetype = 'application/json'
        # 返回json格式的数据
        return response
    
    if __name__ == "__main__":
        app.run()

    方案二

    导入库

    from flask import Flask, jsonify

    将数据转化为json

    from flask import Flask, jsonify
    
    app = Flask(__name__)
    # 防止把中文转换为ASCII编码
    app.config['JSON_AS_ASCII'] = False
    @app.route('/index', methods=['GET', 'POST'])
    def index():
        # 重定向到下面的hello函数
        # 定义一个字典
        date = {
            'name': "zhangsan张三"
        }
    
        return jsonify(date)
    
    if __name__ == "__main__":
        app.run()
    

    需要注意的是,当使用jsonify返回json的时候,虽然更加简洁了,但是不能设置mimetype属性。需要添加下面这行代码来防止中文被转换为ASCII编码。

    # 防止把中文转换为ASCII编码
    app.config['JSON_AS_ASCII'] = False


沪ICP备19023445号-2号
友情链接