2014-03-24 31 views
1

不知道这是否可能,但如果是这样的话,那将会非常棒。如何让urllib2以数组的形式返回数据

我的代码是:

url = "https://*myDomain*.zendesk.com/api/v2/organizations/*{id}*/tags.json" 
req = urllib2.request(url) 
password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm() 
password_manager.add_password(None, url, '[email protected]', 'password') 
auth_manager = urllib2.HTTPBasicAuthHandler(password_manager) 
opener = urllib2.build_opener(auth_manager) 
urllib2.install_opener(opener) 
response = urllib2.urlopen(req) 
tagsA = response.read() 
print tagsA 

现在返回的数据是:

{"tags":[]} 

的API调用自身返回下列

{ 
tags: [] 
} 

但是试图访问列表不起作用,因为它似乎将tagsA作为一个字符串处理。我希望它把它作为一个列表,以便我可以检查'标签'是否为空。

任何帮助将不胜感激!

回答

2

你需要通过json.loads()加载JSON字符串到Python字典:

import json 

... 

tagsA = json.loads(response.read()) 
print tagsA['tags'] 

或者,通过responsejson.load()(感谢@JF塞巴斯蒂安的评论):

tagsA = json.load(response) 
print tagsA['tags'] 
+1

或'json.load(response)'。都假设字符编码是utf-8 – jfs

+0

真棒谢谢你! – user3173806

0

你需要json.load(或json.loads)响应主体。但是,如果您打算在Python中执行任何类型的半复杂HTTP调用(身份验证,cookie等),您应该真正使用Kenneth Reitz的优秀请求库(http://python-requests.org/)而不是urllib调用。您的整个代码将变为:

import requests 
response = requests.get(url, auth=("my_username", "my_password")) 
tagsA = response.json() 
相关问题