python - 亚马逊 lambda 函数不接受帖子
问题描述
测试我的 lambda 函数时收到此错误消息。
{
"errorMessage": "the JSON object must be str, bytes or bytearray, not list",
"errorType": "TypeError",
"stackTrace": [
" File \"/var/task/handler.py\", line 90, in send_friend_request\n payload = json.loads(event['body'])\n",
" File \"/var/lang/lib/python3.7/json/__init__.py\", line 341, in loads\n raise TypeError(f'the JSON object must be str, bytes or bytearray, '\n"
]
}
它抱怨的行是:
payload = json.loads(event['body'])
这是功能:
def accept_friend_request(event, context):
payload = json.loads(event['body'])
request_id = payload['request_id']
fromUsername = payload['fromUsername']
toUsername = payload['toUsername']
我寄给儿子的格式是:
{
"body": [
{
"fromUsername": "testUsrname",
"toUsername": "testsToUsername"
}
]
}
我尝试过其他格式来发送儿子,例如:
{
"fromUsername": "testUsrname",
"toUsername": "testsToUsername"
}
但这也会引发错误:
{
"errorMessage": "'body'",
"errorType": "KeyError",
"stackTrace": [
" File \"/var/task/handler.py\", line 90, in send_friend_request\n payload = json.loads(event['body'])\n"
]
}
我真的不知道该怎么做。我是以错误的格式发送儿子还是我接受了 json.loads 错误?
解决方案
json.loads()
接收字符串作为参数并将其转换为 python 对象(列表/字典)。
您的代码中的问题event["body"]
已经是 python 对象(列表,根据您共享的错误)。正如 AWS Lambda 文档中提到的 Python 事件处理函数:
event – AWS Lambda uses this parameter to pass in event data to the handler. This parameter is usually of the Python dict type. It can also be list, str, int, float, or NoneType type
所以你不需要用json.loads()
它来解析成python对象。你可以做:
# For the following event:
{
"body": [
{
"fromUsername": "testUsrname",
"toUsername": "testsToUsername"
}
]
}
def accept_friend_request(event, context):
request_id = context.aws_request_id
payload = event['body']
fromUsername = payload[0]['fromUsername']
toUsername = payload[0]['toUsername']
推荐阅读
- c++ - 访问我不应该被允许访问的数据成员
- javascript - Django - 无法将 Django 表单的 id 传递给 javascript 变量
- windows - 如何在 FOR 循环中获取当前日期
- list - Swift - 如何保存对 CoreData 属性的更改
- php - 使用 fopen() 和 fread() 实现网站搜索功能
- php - 在 PHP 中组合键数组和值数组
- javascript - 具有自身默认值的对象解构赋值
- c++ - 我必须在哪些功能中使用 std::?
- python-3.x - 获取矩阵中向量的长度
- python - 我是否正确使用了 on_guild_leave 函数?