2016-03-28 16 views
1

Pythonに新しく、私の要求をJSONとして正しくエンコードしているかどうかわかりません。私はJSON内の特定の要素にアクセスできるようにしようとしています。これは私に与えPythonでネストされた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}} 

が、私はそれを読みやすくするための試みで出力を変えてきたこれは私が持っているものです。

myvar = jsonvar['isMainSleep'] 

私は、これは別の状況で動作するように取得することができたが、のどれも:とにかく私はこのような何かを試してみた

などisMainSleepなどの変数に特定の要素の値を代入したいと思いますここでの違いと思われるデータが入れ子になっています。

+1

'jsonvar [ '睡眠'] [ 'isMainSleep']' ' –

+1

isMainSleep'が内部にネスト辞書にあります他の辞書の中にネストされたリスト。 'jsonvar [u'sleep]] [0] [u'isMainSleep ']'が必要です。 'u'はUnicode文字列であり、' [0] 'はリストの最初の項目であるため、先頭に 'u'があることに注意してください。何らかのエラーチェックを追加することもできます。 – solarc

+0

@ solarcあなたの提案がうまくいった!しかし、ただのコメントのため、私はそれを答えとして受け入れることができません。このデータを実際にJSON形式で出力するより良い方法はありますか? –

答えて

4

途中で各辞書にアクセスするだけで済みます。このように:

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

あなたは辞書で、キーsleep、その最初の要素に関連付けられたリストにアクセスします。最後に値はisMainSleepというキーに関連付けられています。

キーの前に接頭辞「u」を追加する必要はありません。あなたのコメントへの答えで

、あなたは可能性があり、このようなJSONとして出力これを:

print json.dumps(myvar) 
+0

完璧なおかげで! –

1

ここではネストされたリストと辞書があり、トップレベルのキーはsleepsummaryです。だからmyvar = jsonvar['sleep'][0]['isMainSleep']を試してください。

関連する問題