AWS Lambda (.NET) + SQS:将 Lambda 事件 JSON 负载转换为字符串时出错

Ale*_*sev 2 .net c# amazon-sqs amazon-web-services aws-lambda

我使用 AWS Lambda(.NET Core 2.1 环境)+ SQS 作为触发器

问题是我的 lambda 无法解析我的 SQS 消息。

将 Lambda 事件 JSON 负载转换为字符串时出错。必须引用 JSON 字符串,例如“Hello World”才能转换为字符串:解析值时遇到意外字符:{。路径 '',第 1 行,位置 1。:JsonSerializerException

这是我的处理程序的声明:

public async Task<string> FunctionHandler(DummyMessage message, ILambdaContext context)
Run Code Online (Sandbox Code Playgroud)

模型:

public class DummyMessage {
  public string Label { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过的来自 AWS 控制台的 SQS 输入:{"Label":"qwerty"}, "{"Label":"qwerty"}", "{\"Label\":\"qwerty\"}",但发生了同样的错误。

你能帮忙解决这个问题吗?

Imr*_*had 6

传递 Json 时,请尝试来自 Newtonsoft.Json.Linq 的 JObject

FunctionHandler(JObject eventStr, ILambdaContext context)
Run Code Online (Sandbox Code Playgroud)

然后您可以反序列化响应,其中 SQSEvent 是从 Amazon.Lambda.SQSEvents SDK 库继承的。

var result = eventStr.ToObject<SQSEvent>();
Run Code Online (Sandbox Code Playgroud)