我想传递一个我写入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
答案 0 :(得分:8)
您可以使用app.json_encoder = JSON_Improved
自定义Flask应用的json编码器。 JSON_Improved
继承自flask.json.JSONEncoder
class JSON_Improved(JSONEncoder):
pass
中有一个Flask Snippets