Amazon.Lambda.Serialization.SystemTextJson 2.4.3
Prefix Reserved
dotnet add package Amazon.Lambda.Serialization.SystemTextJson --version 2.4.3
NuGet\Install-Package Amazon.Lambda.Serialization.SystemTextJson -Version 2.4.3
<PackageReference Include="Amazon.Lambda.Serialization.SystemTextJson" Version="2.4.3" />
paket add Amazon.Lambda.Serialization.SystemTextJson --version 2.4.3
#r "nuget: Amazon.Lambda.Serialization.SystemTextJson, 2.4.3"
// Install Amazon.Lambda.Serialization.SystemTextJson as a Cake Addin #addin nuget:?package=Amazon.Lambda.Serialization.SystemTextJson&version=2.4.3 // Install Amazon.Lambda.Serialization.SystemTextJson as a Cake Tool #tool nuget:?package=Amazon.Lambda.Serialization.SystemTextJson&version=2.4.3
Amazon.Lambda.Serialization.SystemTextJson
此包包含一个定制的 Amazon.Lambda.Core.ILambdaSerializer
实现,该实现使用 System.Text.Json 排序处理 Lambda 函数中 .NET 类型。此排序器针对 .NET Core 3.1,因此不能与 .NET Core 2.1 Lambda 运行时一起使用。
如果要针对 .NET Core 3.1,则强烈建议使用 Amazon.Lambda.Serialization.Json,这可以显著降低 Lambda 的冷启动性能。
此排序器可以存在于程序集或处理程序方法中。如果同时指定,则方法属性具有优先级。
以下是在程序集上设置此属性的示例。
[assembly: Amazon.Lambda.Core.LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
这就是如何将该方法应用于处理器方法。
[Amazon.Lambda.Core.LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
public Response CustomSerializerMethod(Request input)
{
...
}
使用 C# 源生成器进行序列化
C# 9 提供了源生成器,允许在编译时进行代码生成。这可以减少对反射 API 的使用,并提高应用程序启动时间。.NET 6 更新了本机 JSON 库 System.Text.Json 使用源生成器,允许在不使用反射 API 的情况下进行 JSON 解析。
要使用 Lambda 中的 JSON 序列化源生成器,您必须在项目中定义一个新的空类,使其从 System.Text.Json.Serialization.JsonSerializerContext
继承。此类必须是部分类,因为源生成器会向此类添加代码以处理序列化。在空的部分类上,为源生成器必须为其生成序列化代码的每个 .NET 类型添加 JsonSerializable
属性。
以下是一个名为 HttpApiJsonSerializerContext 的示例,它注册了亚马逊 API 网关 HTTP API 事件和响应类型,以便生成序列化代码
[JsonSerializable(typeof(APIGatewayHttpApiV2ProxyRequest))]
[JsonSerializable(typeof(APIGatewayHttpApiV2ProxyResponse))]
public partial class HttpApiJsonSerializerContext : JsonSerializerContext
{
}
要注册序列化源生成器,请使用 LambdaSerializer
属性,传入 SourceGeneratorLambdaJsonSerializer
类型,并将自定义上下文类型(例如 HttpApiJsonSerializerContext
)作为泛型参数。
[assembly: LambdaSerializer(
typeof(SourceGeneratorLambdaJsonSerializer
<APIGatewayExampleImage.HttpApiJsonSerializerContext>))]
自定义序列化选项
Both DefaultLambdaJsonSerializer
和 SourceGeneratorLambdaJsonSerializer
会构造一个 JsonSerializerOptions
实例,用于自定义 Lambda JSON 事件的序列化和反序列化。例如,添加特殊转换器和命名策略。
为了进一步自定义 JsonSerializerOptions
,创建一个新的类型,从扩展 DefaultLambdaJsonSerializer
或 SourceGeneratorLambdaJsonSerializer
继承,并将一个 Action
自定义器传递给基构造函数。然后,使用 LambdaSerializer
属性将新类型注册为序列化器。以下是一个自定义序列化器的示例。
public class CustomLambdaSerializer : DefaultLambdaJsonSerializer
{
public CustomLambdaSerializer()
: base(CreateCustomizer())
{ }
private static Action<JsonSerializerOptions> CreateCustomizer()
{
return (JsonSerializerOptions options) =>
{
// Customize options
};
}
}
产品 | 版本 兼容和额外的计算目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 兼容。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 兼容。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp3.1 兼容。 |
-
.NETCoreApp 3.1
- Amazon.Lambda.Core (>= 2.2.0)
-
net6.0
- Amazon.Lambda.Core (>= 2.2.0)
-
net8.0
- Amazon.Lambda.Core (>= 2.2.0)
NuGet 包 (24)
显示依赖于 Amazon.Lambda.Serialization.SystemTextJson 的前5个 NuGet 包
包 | 下载 |
---|---|
Amazon.Lambda.AspNetCoreServer Amazon.Lambda.AspNetCoreServer 使得将 ASP.NET Core Web API 应用程序作为 AWS Lambda 函数运行变得简单。 |
|
Kralizek.Lambda.Template
C# 中创建 AWS Lambda 的结构化模板。它支持日志记录、依赖注入和配置,就像 ASP.NET Core 项目一样。 |
|
LambdaSharp
AWS 的无服务器 .NET - Lambda 库 |
|
Thundra.Agent
包描述 |
|
LambdaWarmer
一个用于优化AWS Lambda函数冷启动的模块 |
GitHub仓库 (16)
显示依赖Amazon.Lambda.Serialization.SystemTextJson的GitHub最受欢迎的前5个仓库
仓库 | 星标 |
---|---|
mongodb/mongo-csharp-driver
官方的MongoDB C# .NET驱动程序
|
|
aws/aws-sdk-net
官方的AWS SDK for .NET。有关AWS SDK for .NET的更多信息,请访问我们的网站
|
|
aws/aws-lambda-dotnet
库、示例和工具,帮助.NET Core开发者开发AWS Lambda函数。
|
|
mcneel/rhino-developer-samples
Rhino和Grasshopper开发者示例代码
|
|
exceptionless/Exceptionless.Net
.NET平台的Exceptionless客户端
|
版本 | 下载 | 最后更新 |
---|---|---|
2.4.3 | 900,592 | 4/25/2024 |
2.4.2 | 312,303 | 4/5/2024 |
2.4.1 | 1,729,225 | 2/16/2024 |
2.4.0 | 2,359,971 | 10/26/2023 |
2.3.1 | 7,586,452 | 2/2/2023 |
2.3.0 | 11,164,786 | 3/23/2022 |
2.2.0 | 5,343,764 | 11/5/2021 |
2.1.0 | 8,294,351 | 10/21/2020 |
2.0.2 | 584,175 | 9/16/2020 |
2.0.1 | 2,310,216 | 5/4/2020 |
2.0.0 | 1,351,300 | 4/28/2020 |
1.0.0 | 676,052 | 3/31/2020 |