2016-03-28 6 views
1

Python'dan Yeni ve isteğimi JSON olarak doğru şekilde kodladığından emin değilim. JSON içindeki belirli öğelere erişmeye çalışıyorum. Bu bana verirİç içe JSON öğelerine erişme Python

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}} 

bunu daha okunabilir hale getirmek için bir girişim çıkışı deđiţtirdiđiniz Bu aldığım şeydir.

myvar = jsonvar['isMainSleep'] 

Bu farklı bir durumda işe almak mümkün ama hiçbiri: Neyse ben böyle bir şey denedim

vb isMainSleep olarak değişkenlere özgü eleman değerleri atamak istiyoruz veri yuvalanmıştı ki buradaki fark gözüküyor.

+1

'jsonvar [ 'uyku'] [ 'isMainSleep']' –

+1

'isMainSleep' sözlükte bir içine yerleştirilmiştir Başka bir sözlüğün içine yerleştirilmiş liste. Jsonvar [u uykusun '] [0] [u'isMainSleep'] 'istiyorsun. Önünde 'u' dikkat edin çünkü bunlar unicode dizgiler ve '[0]' çünkü listedeki ilk öğe. Hata denetimi eklemek isteyebilirsiniz. – solarc

+0

@solarc öneriniz işe yaradı! Ancak sadece bir yorumu olduğu için cevap olarak kabul edemem. Bu verileri çıktı olarak JSON biçiminde daha iyi bir yolu var mı? –

cevap

4

Sadece yol boyunca her bir sözlüğe erişmeniz gerekiyor. Şunun gibi:

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

Daha sonra, bir sözlük olan ilk elemanı, anahtar sleep ile ilişkili listesine erişmek. Son olarak, isMainSleep anahtarıyla ilişkili değer.

Anahtarların önündeki 'u' önekini eklemeniz gerekmediğini unutmayın. Yorumunuza cevap olarak

, çıkış bu böyle bir json olarak verebilir:

print json.dumps(myvar) 
+0

Mükemmel teşekkürler! –

1

Yuvalanmış bir listeniz var ve burada sözlük var, üst düzey anahtarlar ise sleep ve summary. Yani myvar = jsonvar['sleep'][0]['isMainSleep']'u deneyin.