gpt4 book ai didi

python - json响应有什么问题

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:57 24 4
gpt4 key购买 nike

正确工作的 json 响应:

obj = urllib.urlopen("http://www.omdbapi.com/?t=Fight Club")
response_str = obj.read()
response_json = simplejson.loads(response_str)

上面的代码使 json 请求看起来像:

{
"Title":"Fight Club",
"Year":"1999",
"Rated":"R",
"Released":"15 Oct 1999",
......
"Response":"True"
}

所以我现在可以 sleep 了......但是

json 响应无法正常工作:

obj = urllib.urlopen("https://api.stackexchange.com/2.1/answers?order=desc&sort=activity&site=stackoverflow")
response_str = obj.read()
response_json = simplejson.loads(response_str)

上面的代码使 json 请求看起来像:

{

"items": [
{
"question_id": 18384375,
"answer_id": 18388044,
"creation_date": 1377195687,
"last_activity_date": 1377195687,
"score": 0,
"is_accepted": false,
"owner": {
"user_id": 1745001,
"display_name": "Ed Morton",
"reputation": 10453,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/99a3ebae89496eb16afe453aae97f5be?s=128&d=identicon&r=PG",
"link": "https://stackoverflow.com/users/1745001/ed-morton"
}
},
{
"question_id": 18387447,
"answer_id": 18388040,
"creation_date": 1377195667,
"last_activity_date": 1377195667,
"score": 0,
"is_accepted": false,
"owner": {
"user_id": 2494429,
"display_name": "kpark91",
"reputation": 140,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/d903a03e7c5b6d9b21ff598c632de575?s=128&d=identicon&r=PG",
"link": "https://stackoverflow.com/users/2494429/kpark91"
}
}

]
}

返回

JSONDecodeError at /
No JSON object could be decoded: line 1 column 0 (char 0)

我没有使用 simplejson,而是尝试了 json,它给出了以下错误:

ValueError at /
No JSON object could be decoded

我尝试过但失败了:

我在 stackoverflow 上尝试了我的问题答案,但都没有给出明确的解决方案,尽管每个人都以某种方式帮助了我

1) 检查json内容编码是否正确

>>obj.info()

Content-Type: application/json;
charset=utf-8
Content-Length: 2398

2) 我用 utf-8 解码了 response_str

json.loads(response_str).decode("utf-8")

3) 我使用 jsonlint 检查 json 响应的格式

Parse error on line 1:

^
Expecting '{', '['

令人惊讶的是,点击链接挽救了我的 sleep 。 JSONDecodeError: Expecting value: line 1 column 1 (char 0)

基本上我在这两种情况下都使用精确的代码来获取 json 响应,但是第二个 json 响应有什么问题,唯一的区别是我注意到第二个 json 响应的结构与第一个不同。

请提供解释以了解问题。

最佳答案

让我给你一些建议。使用 urllib 很好,但是您会遇到很多麻烦。所以,让我帮你省去痛苦,然后带你去requests .这是处理 url 请求的最佳方式。

这个简短的空闲 session 将演示:

>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}

要安装它,只需转到命令提示符和 pip install requets。 requets 是免费和开源的,它是用纯 python 编写的,所以安装很简单。

这里有一个视频来演示: enter image description here

您的具体问题: enter image description here

关于python - json响应有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18388596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com