使用 Goodreads API 时出现 json.decoder.JSONDecodeError
Posted
技术标签:
【中文标题】使用 Goodreads API 时出现 json.decoder.JSONDecodeError【英文标题】:json.decoder.JSONDecodeError while using Goodreads API 【发布时间】:2020-05-16 14:56:03 【问题描述】:代码是:
@app.route("/login/search/<int:book_id>",methods=["POST","GET"])
def book(book_id):
desc=db.execute("SELECT * from books where id = :id","id":book_id).fetchone()
isbns=desc.isbn
reviews=db.execute("SELECT review from reviews where books_id = :id","id":book_id).fetchall()
res = requests.get("https://www.goodreads.com/book/review_counts.json", params="key": "b1J7lLvE", "isbns":"isbns")
data = res.json()
newDict=
for item in data['books']:
newDict.update(item)
data['books']=newDict
avg_rating=data['books']['average_rating']
review_count=data['books']['work_reviews_count']
return render_template('book.html',desc=desc,reviews=reviews,rate=avg_rating,count=review_count)
错误说:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
谁能弄清楚为什么会这样? .提前致谢
【问题讨论】:
【参考方案1】:调用时在代码中
res = requests.get("https://www.goodreads.com/book/review_counts.json", params="key": "b1J7lLvE", "isbns":"isbns")
print(res.content)
你的输出是:
b'Invalid API key.\n<!-- This is a random-length HTML comment: tgmijslzfwfkbktnapqxedcbllosvgcyaanmcyzhputsuerpqcpiomckurucullmhzgfbdddyxqxpykpbvilzwfmndmpqdxyyqnwamyoazzzudlkogidzxgegvizcmyylshgsrsognjlfsnwyvkvjcbhshtlghswbitidntlbpdzhdgunwroofflbunfhnazakyfkixrtlmeqpfaowzgxkffbekfghpkyrfatjyackvcznfeaaotljhwdexrgwfxbpvrdkbqvnuaxcrfmxhkzdvkbxhenxfnmgwdgkkdkgmlobngwklrsygaiendstpdgaewqencjyxienvcxcdfmpavdzmjyplgv -->'
此响应没有 JSON 格式,这显然是您的问题。 JSONDecoder 需要一个字符串,其中包含它期望从流派中获得的格式
'"name": "John", "age": 30, "city": "New York"'
检查您的响应是否采用 JSON 解码器可读的格式,如果是且问题仍然存在,请报告。
【讨论】:
以上是关于使用 Goodreads API 时出现 json.decoder.JSONDecodeError的主要内容,如果未能解决你的问题,请参考以下文章
尝试通过android调用JSON api时出现无效请求错误
使用 HttpClient 发布 JSON 数据时出现错误 400