这是我第一次在网络服务器上工作,我正在使用flask编写restful get请求,将参数传递给我构建的预测模型。
from flask import Flask, Response
app = Flask(__name__)
api = Api(app)
class AST(Resource):
def get(self):
args = request.args
x1 = args['key1']
x2 = args['key2']
X = [[x1, x2]]
x = load_scaler.transform(X)
y_predict = load_model.predict(x)
y_predict = load_model.predict(np.array(x)).tolist
time = [{'predection':y_predict}]
return Response (json.dumps(time), mimetype='application/json')
api.add_resource(AST, '/start_time')
if __name__ == '__main__':
app.run
当我运行代码时,它给了我错误:
回溯显示
File "/Users/123/Documents/123/webserver/predictionast.py", line 60, in get
return Response (json.dumps(time), mimetype='application/json')
File "/Users/123/opt/anaconda3/lib/python3.7/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "/Users/123/opt/anaconda3/lib/python3.7/json/encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/Users/123/opt/anaconda3/lib/python3.7/json/encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "/Users/123/opt/anaconda3/lib/python3.7/json/encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type builtin_function_or_method is not JSON serializable
y_predict 是数组
当您尝试将 python 内置方法或属性传递给 json.loads 或 dumps 方法时,会出现“内置类型的对象不可 JSON 可序列化”的错误。 它无法序列化 python 方法的内部类型。例如:
json_1 = {"time": datetime.now}
json_2 = {"time": str(datetime.now)}
print(json.loads(json_2))
print(json.loads(json_1))
当您尝试在序列化时打印 json_1 对象时,它会失败,因为它使用 python 方法中的内部 bulit 。另一方面,json_2 将被序列化并打印,因为它使用众所周知的 JSON 数据类型 - String。