gpt4 book ai didi

json.net - SwaggerUI 5.0.0 忽略 JsonProperty 名称

转载 作者:行者123 更新时间:2023-12-03 16:30:32 24 4
gpt4 key购买 nike

我最近使用 ASP.NET Core 3.1 将 ASP.NET Core API 应用程序升级到 Swashbuckle/Swagger 5.0.0。

<PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="5.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="5.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="5.0.0" />

但是,这样做后,我注意到 Swagger UI 现在忽略了 DTO 属性上的 Newtonsoft/JSON.NET JsonProperty 属性名称。例如:

[HttpGet("testget", Name = "testget")]
[ProducesResponseType(StatusCodes.Status200OK)]
public ActionResult<TestGetResponse> TestGet()
{
var response = new TestGetResponse { MyName = "John" };

return Ok(response);
}

public class TestGetResponse
{
[JsonProperty("name")]
public string MyName { get; set; }
}

在 Swagger UI 中输出为:

代码 200:
示例值
Model
{
"myName": "string"
}

而不是模型属性名称 name .

对于 Startup.cs ConfigureServices 中的 Swagger,我目前拥有:

services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo
{
Version = "v1",
Title = "My API",
});

c.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"));
});

对于 Startup.cs 配置中的 Swagger,我目前拥有:

app.UseSwagger();

app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API");
c.RoutePrefix = "swagger";
});

我知道如果我使用 System.Text.Json属性 JsonPropertyName相反,这将得到修复,但是我现在需要坚持使用原始属性。

Start.cs 中是否有设置告诉 SwaggerUI 使用 Newtonsoft JsonProperty 属性,或者我需要在 ASP.NET Core 配置级别进行更改?

最佳答案

从 Swashbuckle/Swagger 版本 5.0.0 开始,对 NewtonSoft JSON.net 的完全支持似乎是通过一个单独的包提供的。

要使其正常工作:

1) 安装nuget包Swashbuckle.AspNetCore.Newtonsoft版本 5.0.0+

2) 在 Startup.ConfigureServices() 中调用支持:
services.AddSwaggerGenNewtonsoftSupport();
更多信息可以找到here .

关于json.net - SwaggerUI 5.0.0 忽略 JsonProperty 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60256300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com