Newtonsoft.Json保留小数Convert

/// <summary> /// 自定义数值类型序列化转换器 /// </summary> public class DecimalDigitsConvert : JsonConverter { //是否开启自定义反序列化,值为true时,反序列化时会走ReadJson方法,值为false时,不走ReadJson方法,而是默认的反序列化 public override bool CanRead => false; //是否开启自定义序列化,值为true时,序列化时会走WriteJson方法,值为false时,不走WriteJson方法,而是默认的序列化 public override bool CanWrite => true; /// <summary> /// 序列化后保留小数位数 /// </summary> public virtual int? Digits { get; private set; } /// <summary> /// 构造函数 /// </summary> public DecimalDigitsConvert() { } /// <summary> /// 构造函数 /// </summary> /// <param name="digits">序列化后保留小数位数</param> public DecimalDigitsConvert(int digits) { this.Digits = digits; } public override bool CanConvert(Type objectType) { return objectType == typeof(decimal) || objectType == typeof(Nullable<decimal>); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { throw new NotImplementedException(); } /// <summary> /// 重载序列化方法 /// </summary> /// <param name="writer"></param> /// <param name="value"></param> /// <param name="serializer"></param> public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { if (value == null) { writer.WriteNull(); } else { if (Digits.HasValue) { string.Format("{0:N" + Digits + "}", value); } else { writer.WriteValue(value.ToString()); } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异