python – json响应有什么问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – json响应有什么问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2768字,纯文字阅读大概需要4分钟。
内容图文
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"
}
所以我现在可以睡觉了……但是
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 '{', '['
令人惊讶的是,在我获得睡眠的链接之后.
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
基本上我在两种情况下都使用精确代码来获取json响应,但是第二次json响应有什么不对,只有差异我注意到第二次json响应的结构与第一次响应不同.
请提供解释以了解问题.
解决方法:
我来给你一些建议.使用urllib非常棒,但是你会遇到很多麻烦.所以,让我为你省去痛苦,然后引导你到requests.这是处理网址请求的最佳方式.
这个简短的IDLE会话将证明:
>>> 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编写,所以安装很简单.
这是一个演示视频:
你的特殊问题:
内容总结
以上是互联网集市为您收集整理的python – json响应有什么问题全部内容,希望文章能够帮你解决python – json响应有什么问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。