如何自定义Python Flask API的输出字段顺序?
解决Flask API输出JSON字段自定义顺序的问题
核心原因
Flask默认开启JSON_SORT_KEYS配置(值为True),会自动对JSON输出的字段按字母排序;另外Python3.6及以下版本的普通字典不保留插入顺序,也会导致字段顺序不可控。
解决方案
1. 关闭Flask的自动排序配置
初始化Flask应用时添加以下配置,禁用字段自动排序:
from flask import Flask app = Flask(__name__) # 关闭JSON字段自动排序 app.config['JSON_SORT_KEYS'] = False
2. 按自定义顺序构造返回数据
根据你的Python版本选择对应方式:
- Python3.7及以上:直接按期望顺序创建普通字典(3.7+字典原生保留插入顺序)
from flask import jsonify @app.route('/your-api-endpoint') def your_api_function(): # 按目标顺序构造数据字典 response_data = { "name": "ACC", "date": "2015-02-02", "open": 1554.9, "high": 1556.7, "low": 1544.8, "close": 1549.6, "volume": 1441, "alma": None } return jsonify(response_data)
- Python3.6及以下:使用
collections.OrderedDict明确指定顺序
from collections import OrderedDict from flask import jsonify @app.route('/your-api-endpoint') def your_api_function(): response_data = OrderedDict([ ("name", "ACC"), ("date", "2015-02-02"), ("open", 1554.9), ("high", 1556.7), ("low", 1544.8), ("close", 1549.6), ("volume", 1441), ("alma", None) ]) return jsonify(response_data)
3. 验证输出
启动Flask应用后访问API端点,即可得到符合自定义顺序的JSON输出:
{ "name": "ACC", "date": "2015-02-02", "open": 1554.9, "high": 1556.7, "low": 1544.8, "close": 1549.6, "volume": 1441, "alma": null }
内容的提问来源于stack exchange,提问作者NAMIT DUBEY
相关产品推荐
相关产品推荐

