首页 > 解决方案 > 有没有办法将我的 AWS Lambda 函数响应更改为 JSON 格式?

问题描述

我正在尝试将我的 Lambda 函数的格式更改为 Json,以便我的 Javascript 可以在 .Json 中读取它,但是我似乎找不到任何关于如何做到这一点的信息,而不会对我的函数造成任何问题。我的 Lambda 函数工作正常,它完美地连接到我的 API 网关,唯一的问题是 Json。有人对我需要做什么有任何猜测吗?

这是我尝试时收到的错误。

{
  "errorMessage": "Object of type set is not JSON serializable",
  "errorType": "TypeError",
  "stackTrace": [
    "  File \"/var/task/lambda_function.py\", line 18, in lambda_handler\n    return json.dumps({int(response[\"Attributes\"][\"visits\"][\"N\"])})\n",
    "  File \"/var/lang/lib/python3.8/json/__init__.py\", line 231, in dumps\n    return _default_encoder.encode(obj)\n",
    "  File \"/var/lang/lib/python3.8/json/encoder.py\", line 199, in encode\n    chunks = self.iterencode(o, _one_shot=True)\n",
    "  File \"/var/lang/lib/python3.8/json/encoder.py\", line 257, in iterencode\n    return _iterencode(o, 0)\n",
    "  File \"/var/lang/lib/python3.8/json/encoder.py\", line 179, in default\n    raise TypeError(f'Object of type {o.__class__.__name__} '\n"
  ]
}

Python代码:

import boto3
import json

def lambda_handler(event, context):

    dynamodb = boto3.client('dynamodb')
    response = dynamodb.update_item (
        TableName='resumecount', 
        Key= {
          'url':{'S': "lewispeterson.com"}
        },
    
        UpdateExpression = 'SET visits = visits + :inc',
        ExpressionAttributeValues = {
            ':inc': {'N': '1'}
        },
        ReturnValues="UPDATED_NEW"
    )

    print("UPDATING ITEM")

return json.dumps({int(response["Attributes"]["visits"]["N"])})

{
 "statusCode": 200,
  "body": "\"192\""
}

标签: pythonjsonpython-3.xaws-lambda

解决方案


推荐阅读