这是我试图在程序中解析的cred.json
文件。
{"accounts":[
{
"id":"1",
"username":"user1",
"password":"password1"
},
{
"id":"2",
"username":"user2",
"password":"password2"
}
]}
这是我用它的代码。这有效,但我知道这不是最好的方法。
import json
with open('cred.json') as cred_file:
parsed_json = json.load(cred_file)
cred_file.close
for x in range(0,2):
user = parsed_json["accounts"][x]["username"]
password = parsed_json["accounts"][x]["password"]
print user, ":", password
我想做同样的事情,没有指定循环的范围。当我尝试对iteritems()
或get()
执行相同操作时,它会给出错误,说unicode不支持这些功能。
请建议我更好的方法。
答案 0 :(得分:3)
parsed_json
已加载整个dict,其中包含一个键" account"其值是一个帐户列表,如dicts。因此,改为执行范围+索引查找,直接遍历帐户列表:
for account in parsed_json["accounts"]:
user = account["username"]
password = account["password"]
print user, ":", password
此外,您不需要cred_file.close
(应该是cred_file.close()
btw),因为它会在您退出with
上下文后关闭。正确的方法是:
with open('cred.json') as cred_file:
parsed_json = json.load(cred_file)
for account in parsed_json["accounts"]:
user = account["username"]
password = account["password"]
print user, ":", password
答案 1 :(得分:0)
使用Python 3
import json
with open('cred.json') as f:
lines_read = f.readlines()
json_str = ''.join(lines_read)
json_dict = json.loads(json_str)
for account in json_dict['accounts']:
user = account['username']
password = account['password']
print(user, ':', password)
基本思想是使用python的迭代器。