此注解用于属性或者getter方法上,用于在序列化时嵌入开发者自定义的代码。比如将一个Date类型的变量转换成Long类型,或是序列化一个double时在其后面限制两位小数点。
下面以将日期格式化为yy-mm-dd为例。
1.自定义日期序列化类
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 日期序列化工具,直接将时间类型的转为yyyy-MM-dd类型的数据
*/
public class CustomDateSerialize extends JsonSerializer<Date> {
//定义日期格式
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
jsonGenerator.writeString(sdf.format(date));
}
}
2.在实体的get方法上加上@JsonSerialize(using = CustomDateSerialize.class)
public class User{
private String userName;
private String password;
private Date loginDate;
@JsonSerialize(using= CustomDateSerialize.class)
public Date getLoginDate(){
return this.loginDate;
}
...
}