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

2w3kk1z5  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(129)

我喜欢 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设置

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
      }

正如您所看到的,“Value”属性被正确地设置为可空值,但列表或数组中的值不能设置为空值。作为一个大胆的猜测,我试图在我的swagger设置中添加以下行,但它显然不起作用。

config.MapType<decimal?>(() => new OpenApiSchema { Type = "number", Format = "decimal?" });
mwg9r5ms

mwg9r5ms1#

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

config.MapType<decimal>(() => new OpenApiSchema { Type = "number", Format = "decimal", Nullable = true });

相关问题