Python: строка JSON в список словарей - получение ошибки при итерации
Я отправляю строку JSON из Objective-C в Python. Затем я хочу разбить содержимое строки в список Python. Я пытаюсь выполнить итерацию по строке (любая строка на данный момент):
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
Я получаю эту ошибку:
Ошибка исключения: объект 'list' не имеет атрибута 'iterates'
Ответы
Ответ 1
Ваши данные JSON - это список словарей, поэтому после json.loads(s)
у вас будет jdata
как список, а не словарь.
Попробуйте следующее:
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
Ответ 2
json.loads(s)
вернет вас list
. Чтобы перебрать его, вам не нужно iteritems
.
>>> jdata = json.loads(s)
>>> for doc in jdata:
... for key, value in doc.iteritems():
... print key, value
Ответ 3
для python 3.6 выше, есть небольшая разница
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