我有一个URL,其中包含一些JSON数据。我想解析这些数据并使用Python转换为字典。网页上的第一行数据不是JSON格式的,所以我想在解析前跳过第一行。网页上的数据如下所示:
expected 1 issue, got 1
{
"Issues": [
{
"issue": {
"assignedTo": {
"iD": "2",
},
"count": "1117",
"logger": "errors",
"metadata": {
"function": "_execute",
"type": "IntegrityError",
"value": "duplicate key value violates unique constraint \nDETAIL: Key (id, date, reference)=(17, 2020-08-03, ZER) already exists.\n"
},
"stats": {},
"status": "unresolved",
"type": "error"
},
"Events": [
{
"message": "Unable to record details",
"tags": {
"environment": "worker",
"handled": "yes",
"level": "error",
"logger": "errors",
"mechanism": "logging",
},
"Messages": null,
"Stacktraces": null,
"Exceptions": null,
"Requests": null,
"Templates": null,
"Users": null,
"Breadcrumbs": null,
"Context": null
},
],
"fetch_time": "2020-07-20"
}
]
}
我试着运行这个脚本:
with urllib.request.urlopen("[my_url_here]") as url:
if(url.getcode()==200):
for _ in range(1):
next(url)
data = url.read()
json=json.loads(data)
else:
print("Error receiving data", url.getcode())
但我遇到了错误:
Traceback (most recent call last):
File "<stdin>", line 6, in <module>
File
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
当我运行它而不使用
for _ in range(2):
next(url)
...但最后一行为“期望值:行2列1(char 1)'。
有什么建议吗?谢谢
2条答案
按热度按时间qyzbxkaa1#
你可以通过下面的代码删除第一行。
代码:
输出:
正如你所看到的,我们实现了删除第一行。但是你的解析Json响应有问题。格式不正确。看看下面的图片。
在交叉线上我们得到了额外的逗号,让解析器知道还有更多的示例,但是您的响应在该范围内没有更多的示例。所以,请检查一下你的代码,用于将你的数据转换为json。如果你有疑问,请写在这里。为了验证json,可以检查https://jsonlint.com/
我希望这对你有帮助...:)
qzlgjiam2#
你可以尝试这样加载json:
这将在第一端线处分裂串并使用其第二部分。但是我不鼓励这样做,因为你不能确定你的服务器总是这样回复--如果可以的话,试着修复端点或者找到一个返回有效JSON回复的端点。
你仍然会得到一个
json.decoder.JSONDecodeError: Invalid control character at: line 14 column 68 (char 336)
,因为数据中有\n
。