Swashbuckle用VS XML注释的双引号包装数字示例

时间:2018-12-04 18:10:11

标签: asp.net-core swagger swagger-ui swashbuckle

我有一个表示端点主体的类,该类是Amount属性,它看起来像这样:

/// <summary>
/// The transaction amount; it must be greater than 0
/// </summary>
/// <example>1.23</example>
[JsonProperty("Amount")]
[Required]
public decimal Amount { get; set; }

我遇到的问题是,当Swashbuckle为该请求正文示例生成JSON时,它最终将Amount值用双引号引起来,如下所示:

{
  "Amount": "1.23"
}

我希望它看起来像一个数字,像这样:

{
  "Amount": 1.23
}

如果我没有提供XML示例标签,则SwaggerUI中生成的请求正文示例就是0.0,没有双引号,例如:

{
  "Amount": 0.0
}

此示例生成的XML注释部分没有引号:

<member name="P:MyAPI.Models.SaleRequest.Amount">
    <summary>
    The transaction amount; it must be greater than 0
    </summary>
    <example>1.23</example>
</member>

但是从Swashbuckle生成的JSON可以做到:

"SaleRequest": {
    "required": [
        "Amount"
    ],
    "type": "object",
    "properties": {
        "Amount": {
            "format": "decimal",
            "description": "The transaction amount; it must be greater than 0",
            "type": "number",
            "example": "1.23"
            }
        }
    }

有没有一种方法可以告诉Swashbuckle不要为带双引号的数字属性包装此XML示例标记?我搜索了一段时间,找不到任何东西。我在配置swagger时曾尝试过另一篇文章的c.MapType<decimal>(() => new Schema { Type = "number", Format = "decimal" });,但这并没有改变任何内容。我也没有在源代码中看到可以应用于该属性的任何属性。我正在使用Swashbuckle 4.0.1

0 个答案:

没有答案