2016-03-14 31 views
0

使用python将json请求发送到其余api。最初的请求是登录!登录成功后会返回一个密钥,以用于每个后续请求。登录服务器在此刻关闭,所以我修改了我的代码作为示例来显示我面对的问题。Python作为单值字典获取JSON响应

#!/usr/bin/env python 

import requests 
from requests.auth import HTTPDigestAuth 
import json 

r = requests.get('myApi') 
data = json.loads(r.content) 
print(r.status_code) 

for key, value in data.items(): 
    print key 
    print value 

apikey = data['startRow'] 

输出是;

401 
response 
{u'status': 401, u'startRow': 0, u'totalRows': 1, u'data': {u'errors': [u'Credentials are not valid']}, u'endRow': 1} 

Traceback (most recent call last): 
    File "zzzz\test.py", line 24, in <module> 
    apikey = data['startRow'] 
KeyError: 'startRow' 

如何引用字典中的特定参数?它出现好像该值实际上是整个回应本身的价值,而不是startRow或错误等。

+1

顺便说一句'requests.Response'对象有一个很好的'以.json()'方法,将处理在没有明确的'json.loads'的情况下解码内容。 –

回答

1

更改行;

apikey = data['response']['startRow'] 
0

使用便捷requests.Response.json()让解析JSON响应的requests照顾:

import requests 

r = requests.get('myApi') 
data = r.json() 
apikey = data['startRow']