如何让urllib2将数据作为数组返回

时间:2014-03-24 13:07:42

标签: python json string list 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, 'example@domain.com', '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 个答案:

答案 0 :(得分:2)

您需要通过json.loads()

将json字符串加载到python字典中
import json

...

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

或者,将response传递给json.load()(感谢@ J.F.Sebastian')

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

答案 1 :(得分:0)

您需要json.load(或json.loads)回复正文。

但是,如果您要在Python中进行任何类型的半复杂HTTP调用(身份验证,cookie等),您应该使用Kenneth Reitz的出色Requests库({{ 3}})而不是urllib调用。您的整个代码将成为:

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