Jackson注解,@JsonDeserialize反序列化,将Json数据的Long类型时间戳转换为LoaclDateTime

项目场景:

第三方接口返回的Json数据中,时间字段为时间戳类型,本地Mysql数据库对应的字段为LocalDateTime,为了方便Json转换对象,将该字段进行反序列化

@JsonAlias注解和@JsonProperty区别

@JsonAlias只影响反序列过程,可以传多个值,但是会覆盖
@JsonProperty影响的是序列化和反序列化,只能有对应的一个值
ps:

  • Java序列化就是指把Java对象转换为字节序列的过程
  • Java反序列化就是指把字节序列恢复为Java对象的过程

解决方案:

使用@JsonDeserialize和@JsonAlias注解

配置依赖

<dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-yaml</artifactId>
</dependency>

DTO对象

在这里插入图片描述

@NoArgsConstructor
@Data
@ToString(callSuper = true)
@Accessors(chain = true)
public class YukeUlpRealTimeDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    @JsonAlias("message")
    private String message;
    @JsonAlias("code")
    private String code;
    @JsonAlias("status")
    private Integer status;
    @JsonAlias("data")
    private List<YukeUlpRealTimeDTO.DataDTO> data;

    @NoArgsConstructor
    @Data
    public static class DataDTO {
        @JsonAlias("time")
        private LocalDateTime uploadDate;

        @JsonDeserialize(using = CustomDateDeserializer.class)
        public void setUploadDate(LocalDateTime uploadDate) {
            this.uploadDate = uploadDate;
        }
    }
}

自定义反序列化类

@Component
public class CustomDateDeserializer extends JsonDeserializer<LocalDateTime> {

    @Override
    public LocalDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
		//JsonParser取出来的字段值是String 先进行转换
        return LocalDateTimeUtil.of(Long.valueOf(jsonParser.getText()));
    }
}

这里用的是hutool工具类转换,hutool要添加依赖

<dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.5</version>
</dependency>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值