json.decoder.JSONDecodeError:额外数据:第 1 行第 5 列

我使用 requests 成功从 api 中提取数据,结果是 requests.model.response。我发现当我将其转换为 json 字典时,出现以下错误(与标题相同):

json.decoder.JSONDecodeError:额外数据:第1行第5列(字符4)/引发JSONDecodeError(“额外数据”,s,end)

为了解决这个问题,我尝试将 model.response 转换为字符串,然后返回到具有以下内容的字典:

responset = response.text responseld = json.loads(json.dumps(responset))

我是根据网上做的一些研究来做到这一点的。不,这对我来说完全没有意义,因为这似乎只是类型的转换,然后又返回到相同的类型。但我认为转储所做的不仅仅是类型转换,因为我在另一个线程中看到这种方法(我在这里展示的)已被用来解决其他人的类似错误。

你有什么建议吗?如果您需要更多信息,请告诉我。谢谢。


qq_花开花谢_0
浏览 73回答 1
1回答

慕妹3242003

有多种方法可以从通过requests库获得的响应中解码 json。我希望您得到response与此类似的代码:response = requests.get(url)首先,最底层,但可靠且易于调试,它使用的response.content是响应的原始正文字节:result = json.loads(response.content.decode('utf-8'))第二个用途response.text基本上是response.content使用库的最佳匹配编码自动转换为文本字符串requests:result = json.loads(response.text)最高级和最简单的,requests需要全力以赴地完成正确的转换工作:result = response.json()其中一种方法应该有效。另外,在收到响应后,您始终需要检查状态代码,因为requests不会在非 200 状态代码上引发异常,因此您需要在解码之前执行assert response.status_code == 200或。response.raise_for_status()状态代码不等于 200 始终意味着服务器响应错误并且响应不包含 json。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python