类型错误:builtin_function_or_method 类型的对象不可 JSON 序列化

问题描述 投票:0回答:1

这是我第一次在网络服务器上工作,我正在使用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

当我运行代码时,它给了我错误:

TypeError:builtin_function_or_method 类型的对象不可 JSON 序列化

回溯显示

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 flask get
1个回答
0
投票

当您尝试将 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。

© www.soinside.com 2019 - 2024. All rights reserved.