You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Swagger中将decimal类型示例显示为0.00而非0?

问题:Swagger中decimal?类型示例值显示为整数,如何改为0.00?

我定义了如下CostDto类:

public class CostDto
{
    public int Id{ get; set; }
    public decimal? Price { get; set; }
}

但Swagger展示的示例却是:

{
    "Id": 0,
    "Price": 0
}

我希望Price的示例显示为0.00,明确这是decimal类型而非整数。尝试了以下配置但没生效:

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

可行解决方案

方法1:直接用[Example]注解指定示例

这是最直接的方式,给Price属性添加Swashbuckle的[Example]注解:

using Swashbuckle.AspNetCore.Annotations;

public class CostDto
{
    public int Id { get; set; }
    [Example(0.00)]
    public decimal? Price { get; set; }
}

配置后Swagger会直接把0.00作为Price字段的示例值展示。

方法2:全局自定义SchemaFilter

如果需要给所有decimal/decimal?类型统一设置示例值,可以写一个SchemaFilter:

public class DecimalSchemaFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        var targetTypes = new[] { typeof(decimal), typeof(decimal?) };
        if (targetTypes.Contains(context.Type))
        {
            schema.Type = "number";
            schema.Format = "decimal";
            schema.Example = new OpenApiDecimal(0.00m);
            schema.Nullable = context.Type == typeof(decimal?);
        }
    }
}

然后在Swagger配置里注册这个过滤器:

services.AddSwaggerGen(options =>
{
    options.SchemaFilter<DecimalSchemaFilter>();
});

这样所有decimal类型的字段都会自动使用0.00作为示例值,不用逐个属性配置。

方法3:通过Xml注释指定示例(需启用Xml注释)

如果项目已经在用Xml注释,也可以通过注释里的<example>标签指定:

public class CostDto
{
    public int Id { get; set; }
    /// <summary>
    /// 价格字段
    /// </summary>
    /// <example>0.00</example>
    public decimal? Price { get; set; }
}

记得在Swagger配置中启用Xml注释支持:

services.AddSwaggerGen(options =>
{
    var xmlFileName = $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml";
    var xmlFilePath = Path.Combine(AppContext.BaseDirectory, xmlFileName);
    options.IncludeXmlComments(xmlFilePath);
});

内容的提问来源于stack exchange,提问作者J Flex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:55:02