C# AWS Lambda-C中的自定义序列化#

C# AWS Lambda-C中的自定义序列化#,c#,amazon-web-services,.net-core,aws-lambda,C#,Amazon Web Services,.net Core,Aws Lambda,大师 我对一个简单的AWS C#Lambda函数有一个恼人的问题。如何序列化名称中带有连字符的字段?例如: { "detail-type" = "ABC", "event-id" = "123" } 如果我使用[assembly:LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer)]它无法将其解析为类中的字段 public class Test {

大师

我对一个简单的AWS C#Lambda函数有一个恼人的问题。如何序列化名称中带有连字符的字段?例如:

{ "detail-type" = "ABC", "event-id" = "123" }
如果我使用
[assembly:LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer)]
它无法将其解析为类中的字段

public class Test
{
     public string DetailType { get; set; }
     public string EventId { get; set; }
}
我不确定是否可以用不同的反序列化器替换反序列化器,或者是否可以向类中的Field属性添加属性,以便它能够识别并读取一个连字符的输入字段


非常感谢您的帮助

我找到了解决办法!似乎
Amazon.Lambda.Serialization.SystemTextJson
(1.7版及更高版本)使用了名称空间!因此,基本上我们可以使用JsonPropertyName属性来控制反序列化。我在下面展示了一个例子

JSON

{ "detail-type" = "ABC", "event-id" = "abc123" }
C#Class

using System.Text.Json.Serialization;

public class Test
{
     [JsonPropertyName("detail-type")]
     public string DetailType { get; set; }

     [JsonPropertyName("event-id")]
     public string EventId { get; set; }
}
Lambda

public string FunctionHandler(Test input, ILambdaContext context)
{
    return "Success!";
}