问题:输出看起来像这样[{\“ FirstName \”:\“ William Smith \”}]“”
问:如何从用C#编写的AWS Lambda函数返回具有格式正确的JSON的字符串?
细节:
我有一个用C#编写的AWS Lambda函数
返回类型为“字符串”
目的是将返回类型作为JSON使用
这是C#Lambda函数被编码为返回的内容:
字符串TestJsonEvent =“ [{\” FirstName \“:\” William Smith \“}]”“;
返回TestJsonEvent;
Lambda函数执行时;它返回:
“ [{\”名字\“:\”威廉·史密斯\“}]”
即使这个变化也返回相同的:
字符串TestJsonEvent = @“ [{”“ FirstName”“:”“威廉·史密斯”“}]”;
返回TestJsonEvent;
最佳答案
Amazon在其announcement for C# support和Lambda Function Handler文档中提供了示例。
相关位:
处理标准数据类型
如下所列,所有其他类型均要求您指定序列化程序。
原始.NET类型(例如string或int)。
收藏和地图-
IList,IEnumerable,IList,数组,IDictionary,IDictionary
POCO类型(普通的旧CLR对象)
预定义的AWS事件类型
对于异步调用,返回类型将被忽略
Lambda。在这种情况下,返回类型可以设置为void。
如果你是
使用.NET异步编程,返回类型可以是Task和
任务类型,并使用异步和等待关键字。想要查询更多的信息,
参见Using Async in C# Functions with AWS Lambda。
除非你的职能
输入和输出参数的类型为System.IO.Stream
,您将
需要序列化它们。 AWS Lambda提供了默认的序列化程序
可以在您的应用程序的程序集或方法级别应用,或者
您可以通过实现ILambdaSerializer
来定义自己的
Amazon.Lambda.Core
库提供的接口。
要将默认的序列化程序属性添加到方法,请首先添加对Amazon.Lambda.Serialization.Json
[...]的依赖
安装Amazon.Lambda.Serialization.Json [1] NuGet软件包,并将引用导入Amazon.Lambda.Serialization.Json
命名空间。
public class Sample
{
[LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
public object Test()
{
return new { FirstName = "William Smith" };
}
}
[1]:Github link