2010-05-12 68 views
68

我想发送一个GET请求到一个我知道使用python以JSON形式返回数据的URL。如何用python请求和处理JSON?

我想知道如何发送这个请求到http://someurl/path/to/json,以及如何解析它 - 最好是一个python字典。

+1

我可以请你将接受的答案转换为使用请求的答案吗? – webjunkie 2016-08-11 09:16:03

+0

当然,这就是我今天要做的:) – sa125 2016-08-12 07:47:50

回答

95

对于任何请求URL的用户,您可能想查看requests。对于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' [不给出任何回应](https://github.com/iPrayag/pydown/blob/master/GetJson.py)运行它,但在一个一个地运行时也是如此python的CLI工作fine.any错误,我把它放在一个'.py'?(ma noob in python) – prayagupd 2014-01-01 05:53:07

+0

我遇到的问题是,DjangoRestFramework序列化程序不接受这为有效的JSON,由于'你在密钥前添加前缀。 – 2014-09-26 09:54:59

+2

@PrayagUpd旧的,你可能已经发现了,但是对于其他人想知道的:在'.py'文件中需要'print(r.json())'来查看响应。 – 2015-08-28 07:01:27

68

Python的标准库有jsonurllib2模块。

import json 
import urllib2 

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

这是一个老问题,但我想加入webjunkie,并指出在2012年图书馆Requests:HTTP for Humans是一个潜在的可取的答案。 http://docs.python-requests.org/en/latest/ – 2012-10-11 12:44:02

+3

你一定要使用请求。 – hughdbrown 2013-06-07 13:46:27