利用JsonSerialize优雅的实现数据类型转换

一、

需求简介:希望通过注解的方式,批量的将时间格式化为预期的格式。

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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值