Swagger 无法将 JsonProperty("PropertyName") 识别为请求属性

问题描述

我在 .net core3.1 中有一个 web api,我正在使用 swagger。

我的一个请求数据类如下。

public class SNMPv1ReqData{
    [JsonProperty("snmpV1Info")]
    [MinLength(1)]
    [MaxLength(2000)]
    [required]
    public List<SNMPv1Info> SNMPv1InfoLst { get; set; }
}

public class SNMPv1Info{
    [JsonProperty("host")]
    [required]
    public string HostName { get; set; }

    [JsonProperty("snmpV1Setting")]
    public SNMPv1Setting SNMPv1Setting { get; set; }

    [JsonProperty("oid")]
    [MinLength(1)]
    [MaxLength(1000)]
    [required]
    public string[] OID { get; set; }
}

在 swagger 请求中显示如下,因为它在 JsonProperty("PropertyName") 中提到

 {   
   "snmpV1Info": [
     {
        "host": "string","snmpV1Setting": {
          "retryCount": 0,"timeout": 0,"port": 0,"communityName": "string"
        },"oid": [
         "string"
        ]
     }   
   ] 
 }

但是当我发送请求时,它显示以下错误

{
  "title": "One or more validation errors occurred.","status": 400,"errors": {
    "SNMPv1InfoLst": [
      "The SNMPv1InfoLst field is required."
    ]
  }
}

SNMPv1InfoLst 是变量名,但我想在 api 请求中使用“snmpV1Info”,在 JsonProperty("snmpV1Info") 中提到的也在 swagger 请求中显示“snmpV1Info”。

Startup.cs

services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1.0.0",new Microsoft.OpenApi.Models.OpenApiInfo
                {
                    Title = "WebAPI",Version = "v1.0",Description = "Edge ASP.NET Core Web API",});
                // Set the comments path for the Swagger JSON and UI.
                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlPath = Path.Combine(AppContext.BaseDirectory,xmlFile);
                c.IncludeXmlComments(xmlPath);
            });

services.AddSwaggerGenNewtonsoftSupport();

Swashbuckle.AspNetCore:5.6.3 Swashbuckle.AspNetCore.Newtonsoft:5.6.3 .Net Core3.1

我无法找到此问题的原因。有人可以帮我吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)