微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swagger UI 不使用 Newtonsoft.Json 来序列化十进制,而是使用 System.Text.json

如何解决Swagger UI 不使用 Newtonsoft.Json 来序列化十进制,而是使用 System.Text.json

当以下 POCO 类的“Salary”字段的十进制值为 12000M(十进制值)时,Swagger UI 将 JSON 属性显示为 12000。 而预期的 JSON 属性值为 12000.0(即尾随零)

在startup.cs的“ConfigureServices(IServiceCollection services)”方法中使用了以下代码

services.AddControllers().AddNewtonsoftJson(options =>
{
    options.SerializerSettings.FloatParseHandling = FloatParseHandling.Decimal;
    options.SerializerSettings.FloatFormatHandling = FloatFormatHandling.DefaultValue;
});
services.AddControllersWithViews().AddNewtonsoftJson(options =>
{
    options.SerializerSettings.FloatParseHandling = FloatParseHandling.Decimal;
    options.SerializerSettings.FloatFormatHandling = FloatFormatHandling.DefaultValue;
});

也使用了以下代码片段,但 Swagger UI 中没有出现预期的输出。 (在 Swashbuckle.AspNetCore.Newtonsoft V6.1.4.0 中)

services.AddAwaggerGenNewtonsoftSupport();

当上面的代码片段不起作用时,也尝试跟随。 但是没有运气。

services.AddMvc().AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.FloatParseHandling = FloatParseHandling.Decimal;
        options.SerializerSettings.FloatFormatHandling = FloatFormatHandling.DefaultValue;
    });

类:

public class Employee{
   public string EmployeeName {get; set;}
   public decimal Salary {get; set;}
   public string Department {get; set;}
}

看起来,即使添加了上面的代码片段,Swagger UI 也没有使用 Newtonsoft.Json 来序列化十进制,而是使用 System.Text.json。

.Net Core 版本为 3.1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。