• 关于去掉decimal 数据尾部无效0的JsonConverter写法


    转json 可用

     public class DecimalCoverterUselessZero : JsonConverter
        {
            private void dumpNumArray<T>(JsonWriter writer, T n)
            {
                var s = n.ToString();
                if (s.EndsWith(".0"))
                    writer.WriteRawValue(s.Substring(0, s.Length - 2));
                else if (s.Contains("."))
                    writer.WriteRawValue(s.TrimEnd('0').TrimEnd('.'));
                else
                    writer.WriteRawValue(s);
            }
            public override void WriteJson(JsonWriter writer, object value,
               JsonSerializer serializer)
            {
                Type t = value.GetType();
                if (t == dblArrayType)
                    dumpNumArray<double>(writer, (double)value);
                else if (t == decArrayType)
                    dumpNumArray<decimal>(writer, (decimal)value);
                else
                    throw new NotImplementedException();
            }
            private Type dblArrayType = typeof(double);
            private Type decArrayType = typeof(decimal);
            public override bool CanConvert(Type objectType)
            {
                if (objectType == dblArrayType || objectType == decArrayType)
                    return true;
                return false;
            }
            public override bool CanRead
            {
                get { return false; }
            }
            public override object ReadJson(JsonReader reader, Type objectType,
                object existingValue, JsonSerializer serializer)
            {
               // var it = (long)reader.Value;
    
                throw new NotImplementedException();
            }
        
    
        }

    属性 特性

     [JsonConverter(typeof(DecimalCoverterUselessZero))]
            public decimal? DailyRent { get; set; }

    sqlsugar 

    }).ToJson();  是确实转了,可我想要转成datatable

    其他测试

       JsonSerializerSettings s1 = new JsonSerializerSettings();
                s1.Converters.Add(new DecimalCoverterUselessZero());  
    
              var  test  = JsonConvert.SerializeObject(12.3600000, null, s1);    

     sqlsugar 确实给了方法是先json 再table,也能实现.感觉有点点别虐.

    最终还是放弃了这种 先json再table

    查完返回datatable之后,做个循环,再对具体字段进行去无效0. 这样看起来更为舒坦一点,看来对于精度要求较高的字段处理,程序上会增加了一些步骤.

  • 相关阅读:
    spring cloud教程
    ideaaaaaaaaa
    Django
    Django 基础介绍
    Pychram
    python
    python
    python
    Python
    Python -- Scrapy 命令行工具(command line tools)
  • 原文地址:https://www.cnblogs.com/zuochanzi/p/16362955.html
Copyright © 2020-2023  润新知