SpringBoot 项目Jackson 配置支持解析JDK8 时间类型代码实例

Jackson 配置支持解析JDK8 时间类型

SpringBoot项目

时间类型解析器:


public class SysUser implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 头像
     */
    private String icon;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 昵称
     */
    private String nickName;

    /**
     * 备注信息
     */
    private String note;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 最后登录时间
     */
    private Date loginTime;

    /**
     * 帐号启用状态:0->禁用;1->启用=
     */
    private Integer enable;

    private Integer gender;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getIcon() {
        return icon;
    }

    public void setIcon(String icon) {
        this.icon = icon;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }

    public Date getLoginTime() {
        return loginTime;
    }

    public void setLoginTime(Date loginTime) {
        this.loginTime = loginTime;
    }

    public Integer getEnable() {
        return enable;
    }

    public void setEnable(Integer enable) {
        this.enable = enable;
    }

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof SysUser)) return false;
        SysUser sysUser = (SysUser) o;
        return Objects.equals(getId(), sysUser.getId()) &&
                Objects.equals(getUsername(), sysUser.getUsername()) &&
                Objects.equals(getPassword(), sysUser.getPassword()) &&
                Objects.equals(getIcon(), sysUser.getIcon()) &&
                Objects.equals(getEmail(), sysUser.getEmail()) &&
                Objects.equals(getNickName(), sysUser.getNickName()) &&
                Objects.equals(getNote(), sysUser.getNote()) &&
                Objects.equals(getCreateTime(), sysUser.getCreateTime()) &&
                Objects.equals(getLoginTime(), sysUser.getLoginTime()) &&
                Objects.equals(getEnable(), sysUser.getEnable()) &&
                Objects.equals(getGender(), sysUser.getGender());
    }

    @Override
    public int hashCode() {
        return Objects.hash(getId(), getUsername(), getPassword(), getIcon(), getEmail(), getNickName(), getNote(), getCreateTime(), getLoginTime(), getEnable(), getGender());
    }

    @Override
    public String toString() {
        return "SysUser{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", icon='" + icon + '\'' +
                ", email='" + email + '\'' +
                ", nickName='" + nickName + '\'' +
                ", note='" + note + '\'' +
                ", createTime=" + createTime +
                ", loginTime=" + loginTime +
                ", enable=" + enable +
                ", gender=" + gender +
                '}';
    }
}

responseBody数据对象:

{
"id":1,
"username":"lvyuanj",
"password":"123456",
"icon":null,
"email":"lvyuanj@126.com",
"nickName":"arvin",
"note":null,
"createTime":[
2020,
9,
6,
22,
23,
18
],
"loginTime":1599741882000,
"enable":1,
"gender":null
}

方法一:

@Configuration
public class CommonConfig {

    @Configuration
    @ConditionalOnClass(ObjectMapper.class)
    @AutoConfigureBefore(JacksonAutoConfiguration.class)
    public class JacksonConfig {
        @Bean
        public Jackson2ObjectMapperBuilderCustomizer customizer() {
            return builder -> {
                builder.locale(Locale.CHINA);
                builder.timeZone(TimeZone.getTimeZone(ZoneId.systemDefault()));
                builder.simpleDateFormat(DatePattern.NORM_DATETIME_PATTERN);
                builder.modules(new Java8TimeModule());
            };
        }
    }
}
public class Java8TimeModule extends SimpleModule {

	public Java8TimeModule() {
		super(PackageVersion.VERSION);
		this.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
		this.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
		this.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
		this.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
		this.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
		this.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
	}
}

相关推荐

  1. k8s之配置springboot项目

    2024-04-02 22:52:02       42 阅读
  2. Springboot Jackson 序列化与反序列化配置

    2024-04-02 22:52:02       47 阅读
  3. jdk9之后springboot项目访问外置jar包配置

    2024-04-02 22:52:02       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 22:52:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 22:52:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 22:52:02       82 阅读
  4. Python语言-面向对象

    2024-04-02 22:52:02       91 阅读

热门阅读

  1. 迪米特法则

    2024-04-02 22:52:02       37 阅读
  2. 10个大幅提升MySQL效率的使用技巧

    2024-04-02 22:52:02       36 阅读
  3. 计算机笔记(1)

    2024-04-02 22:52:02       29 阅读
  4. 图像配准概述

    2024-04-02 22:52:02       34 阅读
  5. Permission Denial: package=android does not belong to uid=2000

    2024-04-02 22:52:02       37 阅读
  6. 探索Python中的强化学习:DQN

    2024-04-02 22:52:02       37 阅读
  7. AI技术创业有哪些机会?

    2024-04-02 22:52:02       44 阅读
  8. leetcode19. 删除链表的倒数第 N 个结点

    2024-04-02 22:52:02       41 阅读
  9. C语言 结构体

    2024-04-02 22:52:02       45 阅读
  10. 常用的SQL语句以及它们的作用和示

    2024-04-02 22:52:02       38 阅读