java中long數據能表示的范圍比js中number大,在跟前端交互時,這樣也就意味着部分數值在js中存不下(變成不准確的值)。
解決辦法可以這樣:
使用fastjson的ToStringSerializer注解,讓系統序列化時,保留相關精度
@JsonSerialize(using = ToStringSerializer.class) private Long id;
@JsonSerialize注解的使用方法
關於這個注解的方法,可以自己定義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); } }