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

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

一、返回装换:JsonSerializer

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

对应的实体类字段加上注解: @JsonSerialize(using = DateJsonSerialize.class)


/**
 * 时间处理: 返回时间戳
 * <P> 字段上添加 @JsonSerialize(using = DateJsonSerialize.class) 注解  </P>
 * @author wangsong
 * @mail 1720696548@qq.com
 * @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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值