如何使用python请求和处理JSON?


91

我正在尝试将GET请求发送到我知道使用python以JSON形式返回数据的URL。

我想知道如何将该请求发送到http://someurl/path/to/json,以及如何解析它-最好是发送给python dict。


2
请问您是否可以根据要求将接受的答案转换为一个?
webjunkie

当然,那就是我今天要做的:)
sa125

Answers:


130

对于任何带有URL请求的内容,您可能需要检出请求。特别是对于JSON:

>>> import requests
>>> r = requests.get('https://github.com/timeline.json')
>>> r.json()
[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...

1
使用它运行$ python GetJson.py 不会给出任何响应,但是在python CLI上逐一运行时,同样的事情可以正常工作。我在将它放在.py?(ma noob in python)中时犯的任何错误
祈祷

1
我遇到的问题是,由于键之前有'u'前缀,因此DjangoRestFramework序列化程序未将其接受为有效json。
wobbily_col 2014年

2
@PrayagUpd旧的,您可能会发现它,但是对于其他任何人都想知道的:在.py文件中需要print(r.json())查看响应。
Antti Haapala 2015年

73

Python的标准库具有jsonurllib2模块。

import json
import urllib2

data = json.load(urllib2.urlopen('http://someurl/path/to/json'))

21
这是一个古老的问题,但是我想加入webjunkie并指出在2012年,库Requests:HTTP for Humans是一个可能更可取的答案。 docs.python-requests.org/en/latest
Peter Hanley,

6
您绝对应该使用请求。
hughdbrown 2013年

1
但是,如果您陷于一个陷入困境的组织中,这使得加载标准库中不包含的库变得困难,这仍然很有用
Thruston
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.