C# AWS Lambda-C中的自定义序列化#
大师 我对一个简单的AWS C#Lambda函数有一个恼人的问题。如何序列化名称中带有连字符的字段?例如: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 {
{ "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!";
}