Разбор AWS Lamdba JSON - PullRequest
       2

Разбор AWS Lamdba JSON

0 голосов
/ 24 сентября 2019

У меня есть функция AWS Lambda, которая возвращает это:

{'Records': [{'EventSource': 'aws:sns', 'EventVersion': '1.0', 
'EventSubscriptionArn': 'deleted', 'Sns': {'Type': 'Notification', 'MessageId': 
'ID', 'TopicArn': 'deleted', 'Subject': None, 'Message': '{"addressLength":
{"NULL":true},"lName":{"NULL":true},"zipCode":{"NULL":true},"loanType":
{"S":"Car"},"city":{"NULL":true},"birthDate":{"NULL":true},"loanAmount":
{"N":"100000"},"ssn":{"NULL":true},"emailAddress":
{"S":"test@testerson.com"},"fName":{"S":"Testy"},"phoneNumber":
{"S":"2220009999"},"streetAddress":{"NULL":true},"LoanBotTableId":
{"S":"85863390"},"state":{"NULL":true}}', 'Timestamp': '2019-09-
24T06:09:37.025Z', 'SignatureVersion': '1', 'Signature': 'deleted',
 'SigningCertUrl': 'URL', 'UnsubscribeUrl': 'URL', 'MessageAttributes': {}}}]}

Я пытаюсь получить информацию Message .Когда я использую Message = event['Records'][0]['Sns']['Message']

, я получаю:

{
    "addressLength": {
        "NULL": true
    },
    "lName": {
        "NULL": true
    },
    "zipCode": {
        "NULL": true
    },
    "loanType": {
        "S": "Car"
    },
    "city": {
        "NULL": true
    },
    "birthDate": {
        "NULL": true
    },
    "loanAmount": {
        "N": "9000"
    },
    "ssn": {
        "NULL": true
    },
    "emailAddress": {
        "S": "had@g.com"
    },
    "fName": {
        "S": "haad"
    },
    "phoneNumber": {
        "S": "9099999999"
    },
    "streetAddress": {
        "NULL": true
    },
    "LoanBotTableId": {
        "S": "39765985"
    },
    "state": {
        "NULL": true
    }
}

Когда я использую

Message = event['Records'][0]['Sns']['Message']['phoneNumber']['S']

, я получаю

[ОШИБКА] TypeError: строковые индексы должны быть целыми числами

Может ли кто-нибудь помочь мне получить информацию?

1 Ответ

2 голосов
/ 24 сентября 2019

Ошибка, которую вы получаете, связана с тем, что Message = event['Records'][0]['Sns']['Message'] является строкой, но вы пытаетесь получить доступ к ключу phoneNumber, следовательно, возникает ошибка.

Сначала вы должны проанализировать json, а затем получить доступданные:

message = event['Records'][0]['Sns']['Message']
parsed_message = json.loads(message)
phone_number = parsed_message['phoneNumber']['S']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...