我有一个Python3.8AWS Lambda函数,它从web应用程序接收表单输入。来自表单输入的数据传递到Lambda函数,并位于事件字典中。问题是lambda无法将其识别为表并将其转换为字符串。下面是我的JS和Python代码
function addPart(partName) {
var raw = JSON.stringify({'partName':partName});
$.ajax({
method: 'POST',
url: "Insert URL Here", // I have a real (working) invoke URL here
headers: {
Authorization: authToken
},
body: raw,
contentType: 'application/json',
success: completeRequest,
error: function ajaxError(jqXHR, textStatus, errorThrown) {
console.error('Error requesting ride: ', textStatus, ', Details: ', errorThrown);
console.error('Response: ', jqXHR.responseText);
alert('An error occured when adding your part:\n' + jqXHR.responseText);
}
});
}
import boto3
import json
dynamodb = boto3.resource('dynamodb')
UniqueUser = "test"
partName = "default"
def lambda_handler(event, context):
UniqueUser = event['requestContext']['authorizer']['claims']['sub']
partName = event['partName']
# partName = event['body']['partName']
table = dynamodb.Table('Parts')
response = table.put_item(
Item={
'UserID': UniqueUser,
'PartName': partName
}
)
print(event)
return {
'statusCode': 200,
'headers': {
'Access-Control-Allow-Origin': '*'
},
'body': json.dumps(partName)
}
这是对print(event)
行的响应的相关部分。问题在于,dispite的格式类似于Python库,它在引号中,充当字符串。有人知道如何解决这个问题吗
'body': '{"partName":"test"}'
在你的
lambda_handler
中,你有因为
partName
可能是{"partName":"test"}
,所以json.dumps 函数将把partName
序列化为str
,结果 在'{"partName":"test"}'
中为了避免这种情况,您可以直接返回
partName
:另一种方法是在客户端的JS中使用JSON.parse来反序列化json字符串
我使用deceze的注释建议解决了这个问题,并将其解析为字典。这是我比较它的代码:
相关问题 更多 >
编程相关推荐