AWS Лямбда, возвращающая JSON данные в виде строки - PullRequest
1 голос
/ 17 апреля 2020

Я использую AWS Lambda для создания своих API и хочу вернуть данные массива в формате JSON. Тем не менее, когда я вызываю лямбду, он может вернуть необходимые данные JSON, но он приходит в виде строки в двойных кавычках. Я попытался запустить тот же код в моей Python IDE, и все работает нормально, но когда я пытаюсь вернуть его в Lambda, он выглядит как строка. Это как-то связано с тем, как Lambda обрабатывает оператор return в Python функциях? Вот как я возвращаю данные в своей лямбде:

return {
            'statusCode': 200,
            'headers': {
            "Access-Control-Allow-Origin": "*",
            "Access-Control-Allow-Methods": 'GET, POST, PUT, DELETE, OPTIONS'
            },
            'body': json.dumps(json_data,default = myconverter)
        }

Здесь json_data - это список python, который заполняется данными, которые извлекаются из базы данных для указанных c уникальный идентификатор, переданный пользователем, и myconverter - кодировщик JSON, который я написал.

Вывод, который я получаю:

{
  "statusCode": 200,
  "headers": {
    "Access-Control-Allow-Origin": "*",
    "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS"
  },
  "body": "[{\"Dp_Record_Id\": 2, \"DP_TYPE\": \"NSDL\", \"DP_ID\": \"40877589\", \"CLIENT_ID\": \"1232\", \"Default_flag\": \"Y\"}]"
}

Здесь я хочу "body", чтобы просто вернуть массив данных без двойных кавычек, например:

"body": [{\"Dp_Record_Id\": 2, \"DP_TYPE\": \"NSDL\", \"DP_ID\": \"40877589\", \"CLIENT_ID\": \"1232\", \"Default_flag\": \"Y\"}]

Пожалуйста, дайте мне знать, если это возможно и как это можно сделать. Любая помощь в этом будет оценена

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Я не уверен, что это то, что вы хотите, но вы можете просто сделать 'body': json_data. Я проверил это сейчас в своей функции λ:

Лямбда-функция

import json

def lambda_handler(event, context):

    json_data = [{"Dp_Record_Id": 2, 
                  "DP_TYPE": "NSDL",
                  "DP_ID": "40877589", 
                  "CLIENT_ID": "1232", 
                  "Default_flag": "Y"}]

    return {'statusCode': 200,
            'headers': {
            "Access-Control-Allow-Origin": "*",
            "Access-Control-Allow-Methods": 'GET, POST, PUT, DELETE, OPTIONS'
            },
            'body': json_data
        }    

Результат

Response:
{
  "statusCode": 200,
  "headers": {
    "Access-Control-Allow-Origin": "*",
    "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS"
  },
  "body": [
    {
      "Dp_Record_Id": 2,
      "DP_TYPE": "NSDL",
      "DP_ID": "40877589",
      "CLIENT_ID": "1232",
      "Default_flag": "Y"
    }
  ]
}
0 голосов
/ 17 апреля 2020

Возможно, клиент неправильно понимает тип, попробуйте добавить в словарь "headers" следующее:

"content-type":"application/json",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...