2012-12-18 15 views
12

yinelemesinde hata alıyorum Objective-C'den Python'a bir JSON dizesi gönderiyorum. Ardından dizenin içeriğini bir Python listesine bölmek istiyorum.Python: Sözlüklerin listesine JSON dizesi -

import json 

s = '[{"i":"imap.gmail.com","p":"[email protected]"},{"i":"imap.aol.com","p":"anoterPass"}]' 
jdata = json.loads(s) 
for key, value in jdata.iteritems(): 
    print key, value 

bu hatayı alıyorum:

Exception Error: 'list' object has no attribute 'iterates'

cevap

15

JSON veri sözlükleri listesidir, böylece json.loads(s) sonra bir listede değil, bir sözlük olarak jdata sahip olacaktır. Yukarıdaki piton 3.6 için

import json 

s = '[{"i":"imap.gmail.com","p":"[email protected]"},{"i":"imap.aol.com","p":"anoterPass"}]' 
jdata = json.loads(s) 
for d in jdata: 
    for key, value in d.iteritems(): 
     print key, value 
4

json.loads(s) size list dönecektir ben bir dize (şimdilik herhangi bir dize) üzerinde yineleme çalışıyorum. Üzerinde yinelemek için iteritems'a ihtiyacınız yoktur.

>>> jdata = json.loads(s) 
>>> for doc in jdata: 
...  for key, value in doc.iteritems(): 
...   print key, value 
+1

orada vardır:

aşağıdaki gibi deneyin? Ama çözümün bunu içeriyor. – Pyderman

0

biraz farklılık Sen `iteritems don't` ihtiyaç

s = '[{"i":"imap.gmail.com","p":"[email protected]"},{"i":"imap.aol.com","p":"anoterPass"}]' 
jdata = json.loads(s) 
print (jdata) 
for d in jdata: 
    for key, value in d.items(): 
     print (key, value) 


[{'i': 'imap.gmail.com', 'p': '[email protected]'}, {'i': 'imap.aol.com', 'p': 'anoterPass'}] 
i imap.gmail.com 
p [email protected] 
i imap.aol.com 
p anoterPass 
İlgili konular