无法使用python解析boto3客户端json响应

Cant parse boto3 client json response using python

我是Python语言的新手。 我需要使用Boto 3和Python获取所有Amazon-Web-Services身份和访问管理(Amazon-IAM)策略详细信息。

我试图解析Boto 3客户端的JSON输出,还需要将key-value对保存到map(policyName,Arn)中。 示例JSON输出如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
    'ResponseMetadata': {
        'HTTPStatusCode': 200,
        'HTTPHeaders': {
            'vary': 'Accept-Encoding',
            'content-length': '19143',
            'content-type': 'text/xml',
            'date': 'Thu, 23 Feb 2017 06:39:25 GMT'
        }
    },
    u 'Books': [ {
        u 'PolicyName': 'book1',
        u 'Arn': '002dfgdfgdfgdfgvdfxgdfgdfgdfgfdg',
        u 'CreateDate': datetime.datetime(2017, 2, 22, 13, 10, 55, tzinfo = tzutc()),
        u 'UpdateDate': datetime.datetime(2017, 2, 22, 13, 10, 55, tzinfo = tzutc())
    }, {
        u 'PolicyName': 'book2','
        u '
Arn': '002dfgdfgdfgdfgvdfxgdfgdfgdfgfdg',
        u '
CreateDate': datetime.datetime(2017, 2, 22, 13, 10, 55, tzinfo = tzutc()),
        u '
UpdateDate': datetime.datetime(2017, 2, 22, 13, 10, 55, tzinfo = tzutc())
    }]
}

我有以下代码

1
2
3
4
5
6
7
8
9
10
11
iampolicylist_response = iamClient.list_policies(
    Scope='Local',
    MaxItems=150
)
    print iampolicylist_response
    res=json.dumps(iampolicylist_response)
print res
ret={}
for i in res["PolicyName"]:
  ret[i["PolicyName"]]=i["Arn"]
return ret

使用json.loads,它会显示如下错误

TypeError: expected string or buffer

使用json.dumps,它显示如下错误

TypeError: datetime.datetime(2017, 2, 22, 13, 10, 55, tzinfo=tzutc()) is not JSON serializable

什么是实际问题?


结果iampolicylist_response已经是字典了

您不需要解析它。

请参阅http://boto3.readthedocs.io/en/latest/reference/services/iam.html#IAM.Client.list_policies

响应是字典对象

删除res=json.dumps(iampolicylist_response)