springmvc 返回时间格式数据序列化处理

项目中经常会出现对请求时间格式和响应时间格式处理的数据,这里整理一下方便大家使用,除了Date 外其他类型也可以自行扩展序列化规则

一、返回装换:JsonSerializer

自定义返回时间格式为 时间戳 Long 或 字符串: yyyy-MM-dd HH:mm:ss

对应的实体类字段加上注解: @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);
            }
        }
    }
}

二、接收转换 Deserialize

自定义接收时间格式为 时间戳 Long 或 字符串: yyyy-MM-dd HH:mm:ss 转为实体类对应数据

对应的实体类字段上或set方法上添加注解: @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;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41463655/article/details/110064335