转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. 这样看起来更为舒坦一点,看来对于精度要求较高的字段处理,程序上会增加了一些步骤.
技术交流qq群:143280841