zoukankan      html  css  js  c++  java
  • Java针对前端Long类型数据精度失真

    后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况。例如:201511200001725439这样一个Long类型的整数,传给前端后会变成201511200001725440

    解决方法:

      方法一:在后台将这个Long类型的字段转换成String类型的,风险比较大。

      方法二:使用fastjson的提供的注解,@JSONField(serializeUsing= ToStringSerializer.class)

    备注:  

      fastjson在com.alibaba.fastjson.serializer包下面提供了多种数据类型转换的注解。

      自己也可以拓展这些注解,通过实现ObjectSerializer接口来完成。

      ToStringSerializer的代码:

    复制代码
    public class ToStringSerializer implements ObjectSerializer {
    
        public static final ToStringSerializer instance = new ToStringSerializer();
    
        @Override
        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,
                          int features) throws IOException {
            SerializeWriter out = serializer.out;
    
            if (object == null) {
                out.writeNull();
                return;
            }
    
            String strVal = object.toString();
            out.writeString(strVal);
        }
    
    }
    复制代码
     
     
     
    使用fastJson
    import com.alibaba.fastjson.annotation.JSONField;
    import com.alibaba.fastjson.serializer.ToStringSerializer;
    
    import java.io.Serializable;
    
    
    public class DeptDO implements Serializable {
    	private static final long serialVersionUID = 1L;
    
        @JSONField(serializeUsing= ToStringSerializer.class)
    	private Long deptId;
    

    使用jackson

    import com.fasterxml.jackson.databind.annotation.JsonSerialize;
    import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
    
    import java.io.Serializable;
    
    public class DeptDO implements Serializable {
    	private static final long serialVersionUID = 1L;
    
        @JsonSerialize(using = ToStringSerializer.class)
    	private Long deptId;
    

      

     
     
     
     
  • 相关阅读:
    BZOJ1119: [POI2009]SLO
    BZOJ1486: [HNOI2009]最小圈
    BZOJ1098: [POI2007]办公楼biu
    BZOJ2242: [SDOI2011]计算器
    PAT A1023
    SpringCloud之整合Feign
    SpringCloud之整合Feign
    小程序在wxml页面格式化类似的2019-02-16T10:54:47.831000时间
    小程序在wxml页面格式化类似的2019-02-16T10:54:47.831000时间
    Javascript基础之-var,let和const深入解析(二)
  • 原文地址:https://www.cnblogs.com/wangxiaowang/p/8796990.html
Copyright © 2011-2022 走看看