19

我正在将一个 JSON 字符串从 Objective-C 发送到 Python。然后我想把字符串的内容分解成一个 Python 列表。我正在尝试迭代一个字符串(现在任何字符串):

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

我收到此错误:

异常错误:“列表”对象没有属性“迭代”

4

3 回答 3

27

您的 JSON 数据是一个字典列表,因此json.loads(s)您将拥有jdata一个列表,而不是字典。

尝试以下操作:

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
于 2012-12-18T17:20:15.117 回答
5

json.loads(s)会回报你list的。要迭代它,您不需要iteritems.

>>> jdata = json.loads(s)
>>> for doc in jdata:
...     for key, value in doc.iteritems():
...          print key, value
于 2012-12-18T17:19:13.677 回答
2

对于上面的python 3.6,有一点区别

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
于 2017-05-24T08:00:57.937 回答