[英]AWS Lambda - Custom Serialization in C#
大师们,
我对一个简单的 AWS C# Lambda function 有一个讨厌的问题。 如何序列化名称中带有连字符的字段? 例如:
{ "detail-type" = "ABC", "event-id" = "123" }
如果我使用[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
它无法将其解析为 class 这样的字段
public class Test
{
public string DetailType { get; set; }
public string EventId { get; set; }
}
我不确定是否可以用不同的反序列化器替换反序列化器,或者是否可以将属性添加到 class 中的字段属性,以便它可以识别带连字符的输入字段并读取它。
任何帮助是极大的赞赏!
我找到了解决方案! 似乎Amazon.Lambda.Serialization.SystemTextJson
(1.7 版及更高版本)使用了System.Text.Json命名空间。 所以基本上我们可以使用 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!";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.