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