微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。