问题:
c# 的long类型精度比前端JS的number精度高,前端JS 的long类型只有17位,当后端传给前端的long类型超过17位时,就会造成数据精度丢失。
解决方案:
1. 我们可以自定义一个json序列化的转换器,将long类型转换为string类型。代码如下:
public class LongToStringConverter : JsonConverter<long> { public override long ReadJson(JsonReader reader, Type objectType, long existingValue, bool hasExistingValue, JsonSerializer serializer) { long value = Convert.ToInt64(reader.Value); return value; } public override void WriteJson(JsonWriter writer, long value, JsonSerializer serializer) { string stringValue = value.ToString(); writer.WriteValue(stringValue); } }
2. 配置我们自定义的 LongToStringConverter
services.AddControllers().AddNewtonsoftJson(options => { // 将long类型转换为string类型,从而解决后端long类型传到前端精度丢失的问题。 options.SerializerSettings.Converters.Add(new LongToStringConverter()); });
标签:long,后端,前端,value,丢失,类型,public,精度 From: https://www.cnblogs.com/xinyublog/p/17337797.html