一、
需求简介:希望通过注解的方式,批量的将时间格式化为预期的格式。
JsonSerialize简介:com.fasterxml.jackson.databind.annotation包提供的序列化的注解
什么是序列化:
将一个对象编码成一个字节流(I/O);而与之相反的操作被称为反序列化。
序列化的目的是为了方便数据的传递以及存储到磁盘上(把一个Java对象写入到硬盘或者传输到网路上面的其它计算机,这时我们就需要将对象转换成字节流才能进行网络传输。对于这种通用的操作,就出现了序列化来统一这些格式)
二、实战
1、首先自定义一个类继承JsonSerializer去重写serialize方法,里面实现具体数据类型转换逻辑
@Slf4j
public class DataFormatSerializeer extends JsonSerializer<String> {
@Override
public void serialize(String dateStr, JsonGenerator jsonGenerator,
SerializerProvider serializerProvider) throws IOException {
if (StringUtils.isNotBlank(dateStr)) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
Date date = null;
try {
date = dateFormat.parse(dateStr);
Timestamp time = new Timestamp(date.getTime());
jsonGenerator.writeString(DateUtils.convertSqlTimeStampToUtc(time, "UTC-4",
DateUtils.ISO8601_DATE_TIME_FORMAT));
} catch (ParseException e) {
log.error("date convert error");
}
} else {
jsonGenerator.writeString("");
}
}
}
2.应用
@JsonSerialize(using = DataFormatSerializeer.class)//这里引用我们自定义的类
private String date;