A menudo, los datos se procesan en el formato de tiempo de solicitud y el formato de tiempo de respuesta en el proyecto. Aquí hay un resumen para su conveniencia. Además de Fecha, otros tipos también pueden extender sus propias reglas de serialización.
1. Vuelva a instalar y cambiar: JsonSerializer
El formato de hora de retorno personalizado es una marca de tiempo Long o una cadena: aaaa-MM-dd HH: mm: ss
Anote el campo de clase de entidad correspondiente: @JsonSerialize(using = DateJsonSerialize.class)
/**
* 时间处理: 返回时间戳
* <P> 字段上添加 @JsonSerialize(using = DateJsonSerialize.class) 注解 </P>
* @author wangsong
* @mail [email protected]
* @date 2020/11/21 0021 14:19
* @version 1.0.0
*/
public class DateJsonSerialize extends JsonSerializer<Object> {
@Override
public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (value != null) {
// value 为时间时,返回时间戳,字段上添加 @JsonSerialize(using = DateJsonSerialize.class) 注解
if (value.getClass().isAssignableFrom(Date.class)) {
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String format = sdf.format((Date) value);
// gen.writeString(format);
String time = ((Date) value).getTime() + "";
gen.writeString(time);
}
}
}
}
Dos, recibir conversión Deserializar
El formato de hora de recepción personalizado es una marca de tiempo Long o una cadena: aaaa-MM-dd HH: mm: ss se convierte a los datos correspondientes al tipo de entidad
Agregue un comentario en el campo de clase de entidad correspondiente o método de conjunto: @JsonDeserialize(using = DateJsonDeserialize.class)
public class DateJsonDeserialize extends JsonDeserializer<Date> {
@Override
public Date deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
String text = p.getText();
if(StringUtils.isBlank(text)){
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = sdf.parse(text);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}