Rom*_*'ai 2 c# asp.net json entity-framework decimal
我有一个使用 EF Core 6 的 ASPNet API 服务器,当我用来WriteAsJsonAsync编写十进制属性时,它会变成:"decimal_property": 0.0000000000000000000000000000。我不想尾随零。
我找到了一些自定义转换的解决方案,但它们都是写在而Newtonsoft不是所以System.Text.Json不能像这样使用
builder.Services.Configure<JsonOptions>(opt =>
{
opt.SerializerOptions.Converters.Add(new DecimalJsonConverter());
}
Run Code Online (Sandbox Code Playgroud)
怎么写一个DecimalJsonConverter可以直接注入的WebApplication?
您可以基于如何编写用于 JSON 序列化的自定义转换器中的示例基本转换器创建转换器,并使用此答案中的扩展方法删除尾随零来解决问题。
从小数中删除尾随零的扩展方法:
public static class ExtensionMethods
{
public static decimal Normalize(this decimal value) =>
value / 1.000000000000000000000000000000000m;
}
Run Code Online (Sandbox Code Playgroud)
使用扩展方法的 json 转换器:
public class DecimalJsonConverter : JsonConverter<decimal>
{
public override decimal Read(
ref Utf8JsonReader reader,
Type typeToConvert,
JsonSerializerOptions options) =>
reader.GetDecimal().Normalize();
public override void Write(
Utf8JsonWriter writer,
decimal value,
JsonSerializerOptions options) =>
writer.WriteNumberValue(value.Normalize());
}
Run Code Online (Sandbox Code Playgroud)
按照您提到的方式注册转换器:
builder.Services.Configure<JsonOptions>(opt =>
{
opt.SerializerOptions.Converters.Add(new DecimalJsonConverter());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1276 次 |
| 最近记录: |