一、什麼是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的使用方法和參數,希望對大家有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/254437.html