Pra*_*mar 1 jsonserializer json.net swagger-ui asp.net-core 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;
});
Run Code Online (Sandbox Code Playgroud)
还使用了以下代码片段,但 Swagger UI 中没有出现预期的输出。(在 Swashbuckle.AspNetCore.Newtonsoft V6.1.4.0 中)
services.AddAwaggerGenNewtonsoftSupport();
Run Code Online (Sandbox Code Playgroud)
当上面的代码片段不起作用时,也尝试以下。但没有运气。
services.AddMvc().AddNewtonsoftJson(options =>
{
options.SerializerSettings.FloatParseHandling = FloatParseHandling.Decimal;
options.SerializerSettings.FloatFormatHandling = FloatFormatHandling.DefaultValue;
});
Run Code Online (Sandbox Code Playgroud)
班级:
public class Employee{
public string EmployeeName {get; set;}
public decimal Salary {get; set;}
public string Department {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
看起来,即使添加上述代码片段后,Swagger UI 也没有使用 Newtonsoft.Json 来序列化十进制,而是使用 System.Text.json。
.Net Core版本是3.1
小智 6
安装这个包
Install-Package Swashbuckle.AspNetCore.Newtonsoft -Version 6.2.3
Run Code Online (Sandbox Code Playgroud)
然后添加这一行
builder.Services.AddSwaggerGenNewtonsoftSupport();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3941 次 |
| 最近记录: |