ASP.NET Core 2.2 - 迁移到 System.Text.Json 后 Swagger 序列化大驼峰式命名法

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

我有一个使用 Swagger 的 ASP.NET Core 2.2 Web API。

我最近从 Swashbuckle.AspNetCore 4.0 升级到 6.5。

除了一些小问题之外,我刚刚意识到,使用

System.Text.Json
(而不是
Newtonsoft.Json
)的新序列化现在生成
swagger.json
文件,其属性名称采用驼峰式大小写,以大写字母开头,而
Newtonsoft.Json
则以小写字母开头骆驼箱。

如何配置,让

swagger.json
看起来和升级前一样?

升级前:

"Geschlecht": {
        "type": "object",
        "properties": {
          "key": {
            "type": "integer",
            "format": "int32"
          },
          "displayName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },

升级后:

"Geschlecht": {
        "type": "object",
        "properties": {
          "Key": {
            "type": "integer",
            "format": "int32"
          },
          "DisplayName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },

当然,我可以使用属性

[JsonPropertyName("key")]
来装饰模型中的每个属性,但我宁愿全局配置它。

我尝试了不同的

ContractResolver
但没有成功:

services.AddMvc()
        .AddJsonOptions(json => json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver());

我很怀疑

SerializerSettings
是 Newtonsoft 命名空间的一部分。我还没有找到
System.Text.Json
命名空间的等效设置。

swagger asp.net-core-webapi swagger-ui asp.net-core-2.2
1个回答
0
投票

您需要使用

System.Text.Json
JsonSerializerOptions
来代替 - 像这样:

services.AddMvc()
        .AddJsonOptions(opt => opt.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase);

我不再有 .NET Core 2.2,所以我无法正确测试它 - 尝试一下!

© www.soinside.com 2019 - 2024. All rights reserved.