在一个大的JSON文件中有这个部分
"UserDetailList": [
{
"UserName": "citrix-xendesktop-ec2-provisioning",
"GroupList": [],
"CreateDate": "2017-11-07T14:20:14Z",
"UserId": "AIDAI2YJINPRUEM3XHKXO",
"Path": "/",
"AttachedManagedPolicies": [
{
"PolicyName": "AmazonEC2FullAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonEC2FullAccess"
},
{
"PolicyName": "AmazonS3FullAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonS3FullAccess"
}
],
"Arn": "arn:aws:iam::279052847476:user/citrix-xendesktop-ec2-provisioning"
},
需要提取用户的AttachedManagedPolicy.Policy名称
期望输出:
"citrix-xendesktop-ec2-provisioning","AmazonEC2FullAccess"
"citrix-xendesktop-ec2-provisioning","AmazonS3FullAccess"
有些用户根本没有任何策略,因此需要一些检查机制来避免错误
with open('1.json') as file:
data = json.load(file)
for element in data['UserDetailList']:
s = element['UserName'], element['AttachedManagedPolicies']
print s
以及获得
(u'citrix-xendesktop-ec2-provisioning', [{u'PolicyName': u'AmazonEC2FullAccess', u'PolicyArn': u'arn:aws:iam::aws:policy/AmazonEC2FullAccess'}, {u'PolicyName': u'AmazonS3FullAccess', u'PolicyArn': u'arn:aws:iam::aws:policy/AmazonS3FullAccess'}])
添加时element['AttachedManagedPolicies']['PolicyName']
得到:TypeError: list indices must be integers, not str
出现错误是因为
element['AttachedManagedPolicies']
不是字典,您需要遍历element['AttachedManagedPolicies']
,然后按如下所示访问键:这将构造键
PolicyName
的值列表正如您所说的,您有非常大的JSON结构,您可能有空值,也可能没有空值,为此,您可以按以下步骤进行:
相关问题 更多 >
编程相关推荐