在NSwag.AspNetCore版本=14.1中设置SerializerSettings

问题描述 投票:0回答:1

我需要为NSwag中使用的JsonSerializer设置CamelCase配置,在旧版本中我创建了JsonSerializerSettings的实例,设置属性ContractResolver并覆盖方法AddOpenApiDocument中的SerializerSettings,现在我找不到SerializerSettings

这是之前使用的代码:

private void AddSwaggerEndpoints(IServiceCollection services, UnoSwaggerEndpoint[] endpoints)
{
    var nswagDefaultSerializerSettings = new JsonSerializerSettings()
    {
        ContractResolver = new CamelCasePropertyNamesContractResolver(),
    };

    foreach (var endpoint in endpoints.OrderBy(e => e.DocumentName))
    {
        services.AddOpenApiDocument(o =>
        {
            o.DocumentName = endpoint.DocumentName;
            o.Title = endpoint.Title;
            o.ApiGroupNames = endpoint.ApiGroupName;
            o.SerializerSettings = nswagDefaultSerializerSettings;
            o.SchemaSettings.SchemaNameGenerator = new NestedClassNameSchemaNameGenerator();
            o.Version = endpoint.Version;
            o.SchemaSettings.AllowReferencesWithProperties = true;
            o.SchemaSettings.GenerateEnumMappingDescription = true;
            o.DocumentProcessors.Add(new SignalRTypescriptDocumentProcessor(endpoint));
            o.DocumentProcessors.Add(new SchemaSorterDocumentProcessor());
        });
    }
}
.net nswag
1个回答
0
投票

AspNetCoreOpenApiDocumentGeneratorSettings
现在没有
SerializerSettings
属性或任何替代品。请看这里,现在是如何实施的。

https://github.com/RicoSuter/NSwag/blob/6f5e5f9006a34b22d8755428026ff6395d8d8631/src/NSwag.Generation.AspNetCore/AspNetCoreOpenApiDocumentGeneratorSettings.cs

要在 NSwag 中使用驼峰式大小写处理 JSON 序列化, 您通常在 ASP.NET Core 的默认 MvcJsonOptions 或 JsonOptions 中配置序列化器,而不是直接在 NSwag 中配置。

builder.Services.AddControllers()
    .AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    });

builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
    });
© www.soinside.com 2019 - 2024. All rights reserved.