Python:字典列表的JSON字符串 - 迭代时获取错误

时间:2012-12-18 17:17:51

标签: python json

我正在从Objective-C向Python发送一个JSON字符串。然后我想将字符串的内容分解为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

我收到此错误:

  

异常错误:'list'对象没有属性'iterates'

3 个答案:

答案 0 :(得分:20)

您的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

答案 1 :(得分:4)

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

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

答案 2 :(得分:1)

对于上面的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