java中long数据能表示的范围比js中number大,在跟前端交互时,这样也就意味着部分数值在js中存不下(变成不准确的值)。
解决办法可以这样:
使用fastjson的ToStringSerializer注解,让系统序列化时,保留相关精度。
/**
* 记录属性的主键
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
关于这个注解的方法,可以自己定义class,作为using的值来使用。
/** 订单创建时间 */
@JsonSerialize(using = DateToLongSerializer.class)
private Date createTime;
这个的意义就是当转成json时,把时间转成秒的格式。
public class DateToLongSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeNumber(date.getTime() / 1000);
}
}