JAVA前后端交互,精度失精问题

一、后端的Long类型数据过长发到前端时候,前端会对最后几位进行四拾伍入,失去具体的值。这是JavaScript的语言问题,因此前端处理不了,所以后端要先处理好

解决思路:①将数据库的id的类型改为String(这种不现实)

②自定义Jackson序列化解决。自行将Long类型装换为String

1.在实体类的id上面加上@JsonSerialize注解

2.自定义序列化类继承JsonSerializer<Long> 并指定类型

/**
 * Long转换String的序列化器类
 *   泛型:源类型
 */
public class Long2StringSerializer extends JsonSerializer<Long> {
    @Override
    public void serialize(Long value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeString(value.toString());
    }
}

这样传递到前端的就是String类型的。

如:12346749844196463 变为 "12346749844196463" 多了双引号。

经验分享 程序员 微信小程序 职场和发展