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                
这个命令将在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的版本 Install-Package.
<PackageReference Include="Amazon.Lambda.Serialization.SystemTextJson" Version="2.4.3" />                
对于支持 PackageReference 的项目,请将此 XML 节点复制到项目文件中,以引用此包。
paket add Amazon.Lambda.Serialization.SystemTextJson --version 2.4.3                
#r "nuget: Amazon.Lambda.Serialization.SystemTextJson, 2.4.3"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将其复制到交互式工具或脚本的源代码中,以引用包。
// 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 DefaultLambdaJsonSerializerSourceGeneratorLambdaJsonSerializer 会构造一个 JsonSerializerOptions 实例,用于自定义 Lambda JSON 事件的序列化和反序列化。例如,添加特殊转换器和命名策略。

为了进一步自定义 JsonSerializerOptions,创建一个新的类型,从扩展 DefaultLambdaJsonSerializerSourceGeneratorLambdaJsonSerializer 继承,并将一个 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 兼容。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于 目标框架.NET Standard

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