首页 > 解决方案 > json.decoder.JSONDecodeError:预期值:第 1 行第 1 列(字符 0),json 错误

问题描述

from flask import Flask, request, jsonify
import joblib

app = Flask(__name__)

@app.route('/predict', methods=['POST','GET'])
def predict():
    model = joblib.load('rf_grid.pkl')
    data = request.get_json()
    prediction = model.predict([[np.array(data['Age'],data['SipSp'],data['Parch'],
                                          data['Fare'],data['Sex_male'],
                                          data['Cabin_Rare'],data['Embarked_S'])]])
    output = prediction[0]

    return jsonify(output)


if __name__ == '__main__':
    app.run(debug=True)

这是我在 app.py 下运行的烧瓶文件

import requests
import json

url ='http://127.0.0.1:5000/predict'
dictionary = {'Age':50, 'SipSp':1, 'Parch':1,'Fare':150,'Sex_male':1,'Cabin_Rare':0,'Embarked_S':1}

r = requests.post(url, json = dictionary)
print(r.json())

这是我在 requests.py 下运行的文件。当我运行此文件时,我收到错误:json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

如何摆脱这个错误并让我的 requests.py 运行?

标签: pythonflaskdeployment

解决方案


您的 API 逻辑中存在错误。我已经评论了核心逻辑部分并返回了 JSON 响应。它没有给出任何错误。

import numpy as np
from flask import Flask, request, jsonify
import joblib

app = Flask(__name__)

@app.route('/predict', methods=['POST','GET'])
def predict():
    # model = joblib.load('rf_grid.pkl')
    # data = request.get_json()
    # prediction = model.predict([[np.array(data['Age'],data['SipSp'],data['Parch'],
    #                                       data['Fare'],data['Sex_male'],
    #                                       data['Cabin_Rare'],data['Embarked_S'])]])
    # output = prediction[0]

    output = {"ok": True}

    return jsonify(output)


if __name__ == '__main__':
    app.run(debug=True)

如果你可以请分享rf_grid.pkl文件所以,我可以帮忙。


推荐阅读