AWS Lambda 以字符串形式返回 JSON 数据

r42*_*r42 9 python api json amazon-web-services aws-lambda

我正在使用 AWS Lambda 创建 API,并希望以 JSON 格式返回数组的数据。但是,当我调用 lambda 时,它能够返回所需的 JSON 数据,但它是以双引号引起来的字符串。我尝试在 Python IDE 中运行相同的代码,一切正常,但当我尝试在 Lambda 中返回它时,它以字符串形式出现。这与 Lambda 如何处理 Python 函数中的语句有关吗return?这就是我在 Lambda 中返回数据的方式:

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

json_data是一个 python 列表,其中填充了从数据库检索的用户传递的特定唯一 ID 的数据,并且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\"}]"
}
Run Code Online (Sandbox Code Playgroud)

在这里,我希望"body"只返回一个不带双引号的数据数组,如下所示:

"body": [{\"Dp_Record_Id\": 2, \"DP_TYPE\": \"NSDL\", \"DP_ID\": \"40877589\", \"CLIENT_ID\": \"1232\", \"Default_flag\": \"Y\"}]
Run Code Online (Sandbox Code Playgroud)

请告诉我这是否可能以及如何完成。对此的任何帮助将不胜感激

Mar*_*cin 6

我不确定这是否是您想要的,但您可以这样做\'body\': json_data。我现在在我的 \xce\xbb 函数中测试了这一点:

\n\n

拉姆达函数

\n\n
import json\n\ndef lambda_handler(event, context):\n\n    json_data = [{"Dp_Record_Id": 2, \n                  "DP_TYPE": "NSDL",\n                  "DP_ID": "40877589", \n                  "CLIENT_ID": "1232", \n                  "Default_flag": "Y"}]\n\n    return {\'statusCode\': 200,\n            \'headers\': {\n            "Access-Control-Allow-Origin": "*",\n            "Access-Control-Allow-Methods": \'GET, POST, PUT, DELETE, OPTIONS\'\n            },\n            \'body\': json_data\n        }    \n
Run Code Online (Sandbox Code Playgroud)\n\n

结果

\n\n
Response:\n{\n  "statusCode": 200,\n  "headers": {\n    "Access-Control-Allow-Origin": "*",\n    "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS"\n  },\n  "body": [\n    {\n      "Dp_Record_Id": 2,\n      "DP_TYPE": "NSDL",\n      "DP_ID": "40877589",\n      "CLIENT_ID": "1232",\n      "Default_flag": "Y"\n    }\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n