@JsonSerialize(using = ToStringSerializer.class)和@JsonSerialize注解的使用方法


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 {
    @Override
    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeNumber(date.getTime() / 1000);
    }
}