我希望 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?" });
好吧,我没有正确查看设置的签名。为了解决我的问题,我只需要设置 swagger 如下:
config.MapType<decimal>(() => new OpenApiSchema { Type = "number", Format = "decimal", Nullable = true });