从C#中的AWS Lambda函数返回JSON

时间:2017-05-11 00:57:56

标签: c# aws-lambda

问题:输出看起来像这样[{\“FirstName \”:\“William Smith \”}]“

问题:如何从用C#编写的AWS Lambda函数返回格式良好的JSON的字符串?

详细说明:

  1. 我有一个用C#编写的AWS Lambda函数
  2. 返回类型为“string”
  3. 目的是将返回类型用作JSON
  4. 这就是C#Lambda函数编码返回的内容:

    string TestJsonEvent =“[{\”FirstName \“:\”William Smith \“}]”;         返回TestJsonEvent;

  5. 当Lambda函数执行时;它返回: “[{\”FirstName \“:\”William Smith \“}]”

    1. 即使这种变化也会返回相同的内容:

      string TestJsonEvent = @“[{”“FirstName”“:”“William Smith”“}]”;         返回TestJsonEvent;

1 个答案:

答案 0 :(得分:4)

亚马逊在其announcement for C# supportLambda Function Handler文档中提供了示例。

相关位:

  

处理标准数据类型

     

下面列出的所有其他类型都要求您指定序列化程序。

     
      
  • 原始.NET类型(例如string或int)。
  •   
  • 收藏品和地图 -   IList,IEnumerable,IList,Array,IDictionary,IDictionary
  •   
  • POCO类型(普通旧CLR对象)
  •   
  • 预定义的AWS事件类型
  •   
  • 对于异步调用,将忽略return-type   LAMBDA。在这种情况下,返回类型可以设置为void。
  •   
  • 如果你是   使用.NET异步编程,返回类型可以是Task和   任务类型并使用async和await关键字。欲获得更多信息,   见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