一、什么是Flask Jsonify
Flask是一个轻量级的Python Web框架,其设计目的是使得Web开发变得更加容易。Flask支持多种扩展库,Flask Jsonify是其中一个非常常用的扩展库。所谓的Jsonify,指的是将Python对象转换为Json对象。Flask Jsonify是Flask库中的一个函数,用来将Python数据结构转换为Json并返回到客户端。
二、Flask Jsonify的使用
Flask Jsonify的使用非常简单,我们只需要在Python代码中导入该扩展库,并且在需要返回Json结果的函数中使用该方法即可。下面是一个使用Flask Jsonify的示例代码:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/user_info')
def user_info():
user = {
'name': '小明',
'age': 18,
'gender': '男'
}
return jsonify(user)
if __name__ == '__main__':
app.run()
以上代码中,我们定义了一个/user_info的路由,当用户访问该路由时,会返回一个Json格式的用户信息。其中,我们使用了Flask Jsonify函数将Python字典对象转换为了Json对象。
三、Flask Jsonify函数的参数
Flask Jsonify函数支持多种参数类型,下面我们分别介绍一下这些参数。
1、字典类型的参数
字典类型的参数是使用最为广泛的一种情况,我们可以直接将一个Python字典对象传递给Flask Jsonify函数,该函数会将该字典对象转换为Json。
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/user_info')
def user_info():
user = {
'name': '小明',
'age': 18,
'gender': '男'
}
return jsonify(user)
if __name__ == '__main__':
app.run()
2、列表类型的参数
列表类型的参数也可以被Flask Jsonify函数识别并转换为Json。我们可以将一个Python列表对象传递给Flask Jsonify函数,该函数会将该列表对象转换为Json。
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/user_list')
def user_list():
users = [
{
'name': '小明',
'age': 18,
'gender': '男'
},
{
'name': '小红',
'age': 20,
'gender': '女'
}
]
return jsonify(users)
if __name__ == '__main__':
app.run()
3、自定义JsonEncoder的参数
Flask Jsonify函数还支持定义自定义Json序列化器,即JsonEncoder。我们可以在Flask应用程序初始化时,通过app.json_encoder属性设置自定义的JsonEncoder。
from flask import Flask, jsonify
import json
class UserEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, User):
return {
'name': o.name,
'age': o.age,
'gender': o.gender
}
return json.JSONEncoder.default(self, o)
app = Flask(__name__)
app.json_encoder = UserEncoder
class User:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
@app.route('/user')
def user():
user = User('小明', 18, '男')
return jsonify(user)
if __name__ == '__main__':
app.run()
上述代码中,我们自定义了一个UserEncoder类,并继承了json.JSONEncoder。该类重写了default方法,判断如果传入对象是User类型,则使用该对象的属性生成一个字典对象,并返回该字典对象。当然,我们还需要在Flask应用程序初始化时,通过app.json_encoder属性设置UserEncoder为自定义的JsonEncoder。
4、其它参数
在Flask Jsonify函数中,还支持一些其它的参数。例如: - status_code:指定返回的Http状态码,默认为200; - headers:指定返回的Http头部信息; - indent:指定Json的缩进量; - separators:指定Json中各项之间的分隔符; - cls:指定JsonEncoder。
四、小结
Flask Jsonify是一个很实用的Python库,可以方便地将Python对象转换为Json格式返回到客户端。本文简单介绍了Flask Jsonify的使用方法和参数,希望对大家有所帮助。