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)));
}
}