列表或数组中可为空值的 Swagger/openApi 配置

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

我希望 swagger.json 在列表或数组中保存有关可空类型的信息,知道如何实现吗?

例如,如果我有以下模型:

public class AccountSettingsDto
{
    public int Id { get; set; }
    public decimal? Value { get; set; }
    public List<decimal?> ListValue { get; set; }
    public decimal?[] ArrayValue { get; set; }
}

以下swagger Setup

    services.AddSwaggerGen(config =>
    {
        config.MapType<decimal>(() => new OpenApiSchema { Type = "number", Format = "decimal" });
        config.UseAllOfToExtendReferenceSchemas();
    });

我得到以下 Json

"AccountSettingsDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "value": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "listValue": {
            "type": "array",
            "items": {
              "type": "number",
              "format": "decimal"
            },
            "nullable": true
          },
          "arrayValue": {
            "type": "array",
            "items": {
              "type": "number",
              "format": "decimal"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      }

如您所见,“值”属性已正确设置为可为空,但不是列表或数组中的值。 作为一个疯狂的猜测,我试图在我的 swagger 设置中添加以下行,但它显然不起作用。

config.MapType<decimal?>(() => new OpenApiSchema { Type = "number", Format = "decimal?" });
c# swagger openapi
1个回答
0
投票

好吧,我没有正确查看设置的签名。为了解决我的问题,我只需要设置 swagger 如下:

config.MapType<decimal>(() => new OpenApiSchema { Type = "number", Format = "decimal", Nullable = true });
© www.soinside.com 2019 - 2024. All rights reserved.