将用户构建的JSON编码器传递给Flask的jsonify函数。

9 浏览
0 Comments

将用户构建的JSON编码器传递给Flask的jsonify函数。

我想将我编写的numpy JSON序列化器传递给Flask的jsonify函数,但我找不到方法来实现这一点。我不能使用json.dumps,因为当处理错误消息时,我必须设置Flask响应的status_code。是否有一种类似于在这里使用json.dumps的cls参数的方式来传递JSON序列化器作为参数的方法,详细信息请参阅此处的Convert numpy type to python

以下是我的代码;谢谢。

import json
import numpy as np
from flask import Flask, jsonify
class JSON_Improved(json.JSONEncoder):
    '''
    用于帮助序列化包含numpy数据类型的numpy数组或列表。
    '''
    def default(self, obj):
        if isinstance(obj, np.integer):
            return int(obj)
        elif isinstance(obj, np.floating):
            return float(obj)
        elif isinstance(obj, np.ndarray):
            return obj.tolist()
        else:
            return super(MyEncoder, self).default(obj)
app = Flask(__name__)
@app.errorhandler(ErrorMessage)
def handle_invalid_usage(error):
    response = jsonify(error.to_dict())
    response.status_code = error.status_code
    return response

0