Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中访问嵌套的JSON元素_Python_Json_Python Requests - Fatal编程技术网

在Python中访问嵌套的JSON元素

在Python中访问嵌套的JSON元素,python,json,python-requests,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", u

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'] 
print json.dumps(myvar)

我可以在不同的情况下使用它,但没有一个数据嵌套,这似乎是这里的区别。

这里有一个嵌套列表和字典,顶级键是
sleep
summary
。因此,试试myvar=jsonvar['sleep'][0]['ismainleep']

您只需访问沿途的每一本词典即可。像这样:

myvar = jsonvar['sleep'][0]['isMainSleep']
访问与键
sleep
关联的列表,然后访问其第一个元素,即字典。最后,与键
关联的值是mainseep

请注意,您不需要在密钥前添加前缀“u”

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

myvar = jsonvar['isMainSleep'] 
print json.dumps(myvar)

jsonvar['sleep']['ismainseep']
ismainseep
位于嵌套在另一个字典中的列表中的字典中。您需要
jsonvar[u'sleep'][0][u'ismainseep']
。注意前面的
u
,因为它们是unicode字符串,而
[0]
是列表中的第一项。您可能需要添加一些错误检查。@solarc您的建议有效!然而,因为这只是一个评论,我不能接受它作为答案。有没有更好的方法输出这些数据,使其实际为JSON格式?