2022年9月20日 作者 zeroheart

JsonSerialize注解

原文:(30条消息) @JsonSerialize(using = ToStringSerializer.class)和@JsonSerialize注解的使用方法_阿生的果园的博客-CSDN博客

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);
    }
}