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" 多了双引号。
