我有下面的JSON,我想提取其中的所有电子邮件。json是从AWS cognito导出的,我无法控制它的结构
expected_value = """{
"Users": [
{
"Username": "testUserName1",
"Attributes": [
{
"Name": "testName1",
"Value": "TestValue1@email.com"
}
],
"UserCreateDate": "2021-09-13T11:16:02.627000+01:00",
"UserLastModifiedDate": "2021-09-13T11:16:02.627000+01:00",
"Enabled": true,
"UserStatus": "UNCONFIRMED"
},
{
"Username": "testUsername2",
"Attributes": [
{
"Name": "testEmail2",
"Value": "testValue2@email.com"
}
],
"UserCreateDate": "2021-02-19T11:52:52.465000+00:00",
"UserLastModifiedDate": "2021-02-19T11:52:52.465000+00:00",
"Enabled": true,
"UserStatus": "UNCONFIRMED"
}
]
}"""
我有以下代码,目前我正在按预期值输入json:
def lambda_handler(event, context):
data = json.dumps(expected_value)
y = json.loads(data)
email = y['Users'][0]['Attributes'][0]['Value']
但我得到了以下错误:
{
"errorMessage": "string indices must be integers",
"errorType": "TypeError",
"requestId": "622258cc-8248-4901-8a39-fc6e0a24229c",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 145, in lambda_handler\n email = y['Users'][0]['Attributes'][0]['Value']\n"
]
}
我不知道我做错了什么
根据请求,仍然抛出错误的REPREX:
因为这里的“属性”是一个字典列表
以下内容适合我。注意:我删除了您当前问题中的数据转储和重新加载
lambda事件应该已经是JSON,IIRC
正如错误所说,您需要使用数字对列表进行索引,或者在整个列表上使用for-each循环
相关问题 更多 >
编程相关推荐