问题:输出看起来像这样[{\“ 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# supportLambda 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

07-24 09:39
查看更多