在Python中访问嵌套的JSON元素

时间:2016-03-28 21:16:50

标签: python json python-requests

Python新手,我不确定我是否正确地将我的请求编码为JSON。我试图能够访问JSON中的特定元素。这就是我所拥有的:

import requests
import json

url = "sample.com"
access_token "xxxxx"

headers = {
    'authorization': access_token,
    'cache-control': "no-cache"
    }

response = requests.request("GET", url, headers=headers)

jsonvar = response.json()
print(jsonvar)

这给了我:

{u'sleep': 
     [{u'logId': 11208762595, 
       u'dateOfSleep': u'2016-03-23', 
       u'isMainSleep': True, 
       u'startTime': u'2016-03-22T23:43:30.000', 
       u'restlessCount': 7, 
       u'duration': 12540000, 
       u'restlessDuration': 13, 
       u'minuteData': [{u'value': u'2', u'dateTime': u'23:43:30'}, 
                       {u'value': u'1', u'dateTime': u'23:44:30'}],                         
       u'awakeCount': 1, 
       u'minutesAfterWakeup': 0}], 
 u'summary': 
      {u'totalTimeInBed': 418, 
       u'totalMinutesAsleep': 395, 
       u'totalSleepRecords': 2}}

我改变了输出,试图让它更具可读性。无论如何,我想将特定的元素值分配给变量,如isMainSleep等。

我尝试过这样的事情:

myvar = jsonvar['isMainSleep'] 

我能够让它在不同的情况下工作,但没有数据是嵌套的,这似乎是不同的。

2 个答案:

答案 0 :(得分:4)

您只需要沿途访问每个字典。像这样:

myvar = jsonvar['sleep'][0]['isMainSleep']

您可以访问与键sleep关联的列表,然后是第一个元素,即字典。最后是与键isMainSleep相关联的值。

请注意,您无需添加前缀' u'在你的钥匙前。

在回答您的评论时,您可以将此输出为json,如下所示:

print json.dumps(myvar)

答案 1 :(得分:1)

此处有嵌套列表和字典,顶级键为def get_venue_link_list(links): for link in links: linkset.add(link.get("href")) return linkset sleep。所以试试summary