Подтвердить что ты не робот

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'

4b9b3361

Ответ 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