将用户构建的json编码器传递给Flask的jsonify

时间:2017-05-23 22:31:15

标签: python json numpy flask

我想传递一个我写入Flask的jsonify函数的numpy JSON序列化程序,但我找不到办法做到这一点。我无法使用json.dumps,因为我必须在处理错误消息时设置Flask响应的status_code。有没有办法将JSON序列化程序作为参数传递,类似于使用cls中的json.dumps参数,如下所示:Convert numpy type to python? 我的代码如下;谢谢。

import json
import numpy as np
from flask import Flask, jsonify

class JSON_Improved(json.JSONEncoder):
    '''
    Used to help jsonify numpy arrays or lists that contain numpy data types.
    '''
    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

1 个答案:

答案 0 :(得分:8)

您可以使用app.json_encoder = JSON_Improved自定义Flask应用的json编码器。 JSON_Improved继承自flask.json.JSONEncoder

class JSON_Improved(JSONEncoder):

    pass

http://flask.pocoo.org/snippets/119/

中有一个Flask Snippets