Reputation: 3814
I am sending a JSON string from Objective-C to Python. Then I want to break contents of the string into a Python list. I am trying to iterate over a string (any string for now):
import json
s = '[{"i":"imap.gmail.com","p":"someP@ss"},{"i":"imap.aol.com","p":"anoterPass"}]'
jdata = json.loads(s)
for key, value in jdata.iteritems():
print key, value
I get this error:
Exception Error: 'list' object has no attribute 'iterates'
Upvotes: 20
Views: 66737
Reputation: 241
for python 3.6 above, there has a little difference
s = '[{"i":"imap.gmail.com","p":"someP@ss"},{"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': 'someP@ss'}, {'i': 'imap.aol.com', 'p': 'anoterPass'}]
i imap.gmail.com
p someP@ss
i imap.aol.com
p anoterPass
Upvotes: 3
Reputation: 208665
Your JSON data is a list of dictionaries, so after json.loads(s)
you will have jdata
as a list, not a dictionary.
Try something like the following:
import json
s = '[{"i":"imap.gmail.com","p":"someP@ss"},{"i":"imap.aol.com","p":"anoterPass"}]'
jdata = json.loads(s)
for d in jdata:
for key, value in d.iteritems():
print key, value
Upvotes: 28
Reputation: 6232
json.loads(s)
will return you list
. To iterate over it you don't need iteritems
.
>>> jdata = json.loads(s)
>>> for doc in jdata:
... for key, value in doc.iteritems():
... print key, value
Upvotes: 5