json.net小数较小时会转换成科学记数法
1 /// <summary> 2 /// 解决特别小的小数0.000000001 序列化成科学计数法。 这里把decimal类型转成string 3 /// </summary> 4 public class DecimalConvert : CustomCreationConverter<decimal> 5 { 6 public override decimal Create(Type objectType) 7 { 8 return 0; 9 } 10 public override bool CanWrite => true; 11 public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 12 { 13 if (reader.Value == null) 14 { 15 return 0; 16 } 17 return Convert.ToDecimal(reader.Value); 18 } 19 public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 20 { 21 if (value == null || (decimal)value == 0) 22 { 23 writer.WriteValue(0); 24 return; 25 } 26 writer.WriteValue(Utils.TrimEndZero(value.ToString())); 27 } 28 }
1 public void ConfigureServices(IServiceCollection services) 2 { 3 services.AddMvc().AddJsonOptions(options => 4 { 5 options.SerializerSettings.Converters.Add(new DecimalConvert()); 6 }); 7 }
这样只能转成string类型返回,不知道还有什么其他办法,我希望返回值还是decimal。。。