使用 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时出现无效请求错误

使用令牌标头进行后 API 调用时出现 405 错误

使用 HttpClient 发布 JSON 数据时出现错误 400

从 JSON 响应中提取浮点密钥对值时出现 TypeError

尝试 POST 时出现“无效的 JSON”

使用 Flickr API 时出现 Alamofire AFError