首页 > 其他分享 >Newtonsoft.Json保留小数Convert

Newtonsoft.Json保留小数Convert

时间:2022-09-30 16:03:27浏览次数:55  
标签:Digits Convert Newtonsoft 值为 Json override 序列化 public objectType

 /// <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());
                }
            }
        }
    }
View Code

 

标签:Digits,Convert,Newtonsoft,值为,Json,override,序列化,public,objectType
From: https://www.cnblogs.com/5tomorrow/p/16745175.html

相关文章

  • Newtonsoft.Json时间处理
    一、使用自带的JsonSerializerSettingssettings=newJsonSerializerSettings();settings.Converters.Add(newIsoDateTimeConverter{Dat......
  • MYSQL 列值为JSON串匹配条件查询
    这里需定位到你要查询的字段再json中的位置。比如我需要我的列值JSON格式如下:我需要匹配Tin(123456,223432)可以像下面这样写SELECTREPLACE(JSON_EXTRACT(wms_r......
  • pyspark rdd转json字符串
    +--------+--------------------+|objectid|$geometry|+--------+--------------------+|5|[106.366970696000...|+--------+--------------------+......
  • 在 asp.net core 中,更换使用 Newtonsoft.Json 并阻止驼峰化命名
    首先需要在引用nuget包:Microsoft.AspNetCore.Mvc.NewtonsoftJson然后在添加MVC的Service时,进行添加配置:builder.Services.AddControllersWithViews().A......
  • json字符串与json对象之间的转换
    一、认识json1.什么是json?JSON(JavaScriptObjectNotation,JS对象标记)是一种轻量级的数据交换格式,用完全独立于编程语言的文本格式来存储和传输数据。(可以用......
  • C#中对象与JSON字符串互相转换的三种方式
    JSON(JavaScriptObjectNotation,JS对象标记)是一种轻量级的数据交换格式。关于内存对象和JSON字符串的相互转换,在实际项目中应比较广泛,经过一番搜索,找到如下三种方法......
  • jsonp 跨域请求
    背景:JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-OriginPolicy”(同源策略)。这一策略对于JavaScrip......
  • pandas 某几列转为json/dic 格式
    #%%importpandasaspddf=pd.read_excel('工作表.xlsx')col_list=list(df.columns)del_col_list=['c','d']#需要删除的字段名#构造备注列df['beizhu']=''for......
  • 序列化成Json时,多个对象互相引用导致死循环 Text.Json.JsonException: A possible obj
    错误:当两个类中的属性互相引用时,导致对象实例序列化成Json时死循环,错误如下:System.Text.Json.JsonException:Apossibleobjectcyclewasdetected.Thiscaneither......
  • 跨域 jsonp/CROS
    jsonp是jsonwithpadding的缩写,它不属于Ajax请求,但它可以模拟Ajax请求。封装jsonp 文件functionjsonp(options){//动态创建script标签varscri......