调用认知模式admingetuser
response = client.admin_get_user(
UserPoolId='string',
Username='string'
)
作为回应,我回到response
为
response {'Username': 'xyz@gmail.com',
'UserAttributes': [{'Name': 'sub', 'Value': 'cb0328a8-38fd-4799-84ef-4f7f2733016e'}, {'Name': 'email_verified', 'Value': 'true'},
{'Name': 'phone_number_verified', 'Value': 'false'}, {'Name': 'phone_number', 'Value': '+445115115551'},
{'Name': 'custom:account_id', 'Value': 'a54a936f-d846-44ec-8f6f-c9e127991bda'},
{'Name': 'email', 'Value': 'xyz@gmail.com'}], 'UserCreateDate': datetime.datetime(2018, 12, 10, 13, 46, 47, 533000, tzinfo=tzlocal()),
'UserLastModifiedDate': datetime.datetime(2018, 12, 14, 16, 24, 20, 707000, tzinfo=tzlocal()), 'Enabled': True, 'UserStatus': 'CONFIRMED',
'ResponseMetadata': {'RequestId': '5c649fd3-1005-11e9-b484-433d044b60ba', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Fri, 04 Jan 2019 09:44:42 GMT',
'content-type': 'application/x-amz-json-1.1',
'content-length': '500', 'connection': 'keep-alive', 'x-amzn-requestid': '5c649fd3-1005-11e9-b484-433d044b60ba'}, 'RetryAttempts': 0}}"
我想从python的此响应中提取出phone_no,我该怎么做? 有什么建议吗?
答案 0 :(得分:0)
根据cognito documentation的响应采用JSON格式。
因此您可以简单地使用json.loads(response)
将响应解析为json。这样,您可能会得到字典列表。此列表元素之一将是字典包含phone_number
。该词典中Value
键下的值是电话号码。
答案 1 :(得分:0)
假设您已经将json作为dict加载(一种或另一种方式):
def get_phone(response):
for user_attribute in response.get('UserAttributes', []):
if user_attribute['Name'] == 'phone_number':
yield user_attribute['Value']
response = {'Username': 'xyz@gmail.com',
'UserAttributes': [{'Name': 'sub', 'Value': 'cb0328a8-38fd-4799-84ef-4f7f2733016e'}, {'Name': 'email_verified', 'Value': 'true'},
{'Name': 'phone_number_verified', 'Value': 'false'}, {'Name': 'phone_number', 'Value': '+440123456789'},
{'Name': 'custom:account_id', 'Value': 'a54a936f-d846-44ec-8f6f-c9e127991bda'},
{'Name': 'email', 'Value': 'xyz@gmail.com'}]...}
print(list(get_phone(response)))
get_phone
是生成器功能,因此它将处理可能的多个电话号码(如果存在?),您可以一次遍历结果一个号码,而不必转换为列表。