繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM