【发布时间】:2021-11-10 14:47:24
【问题描述】:
我有以下 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:
【问题讨论】:
-
item['Users']['Attributes']需要item['Users']['Attributes'][0]或['Value']之前的其他索引,因为 Attributes 是对象列表 -
@depperm 你还需要
[0]在["Users"]之后。 -
一切都应该在您的问题中。您问题中的代码没有意义。它引用了未定义的变量,例如
expected_value,而process_event()函数不返回任何值。 -
另外,不要为了再次加载而转储字符串
标签: python json python-3.x