标题:SpringBoot中Jackson日期格式化技巧分享
介绍
在SpringBoot中,我们经常需要进行数据的序列化和反序列化。而日期格式化是很常见的应用场景,Jackson作为SpringBoot内置的序列化/反序列化工具,提供了多种日期格式化的方法。在本文中,我们将介绍 SpringBoot中 Jackson日期格式化技巧。
基本用法
SpringBoot采用的默认日期格式为:yyyy-MM-dd HH:mm:ss。为了实现日期格式化,我们需要在实体类上使用注解@DateTimeFormat(pattern="")来指定日期格式:
public class User {
private Long userId;
private String username;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
// getter and setter
// toString
}
在Controller的返回结果中,SpringBoot框架会自动将日期转化成所注解的格式。
自定义日期格式
有时候,我们需要定义自己的日期格式,此时需要使用Jackson的注解@JsonFormat(pattern="")来完成:
public class User {
private Long userId;
private String username;
@JsonFormat(pattern="yyyy-MM-dd't'HH:mm:ss.SSS'Z'", timezone="GMT+8")
private Date birthday;
// getter and setter
// toString
}
pattern
用于设置日期格式,本示例中日期和时间之间带字母t,表示String类型timezone
用于设置时区
全局配置
有时候,我们需要全局配置日期格式,此时我们可以在SpringBoot中配置ObjectMapper:
@Configuration
public class JacksonConfig {
@Bean
public ObjectMapper getObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
objectMapper.setDateFormat(dateFormat);
return objectMapper;
}
}
示例1
下面我们来演示一下如何使用自定义日期格式:
@RestController
public class UserController {
@GetMapping("/user")
public User getUser() {
User user = new User();
user.setUserId(1L);
user.setUsername("test");
user.setBirthday(new Date());
return user;
}
}
返回结果如下:
{
"userId": 1,
"username": "test",
"birthday": "2021-07-01t08:56:22.238z"
}
示例2
下面我们来演示一下如何使用全局配置日期格式:
@RestController
public class UserController {
@Autowired
private ObjectMapper objectMapper;
@GetMapping("/user")
public User getUser() {
User user = new User();
user.setUserId(1L);
user.setUsername("test");
user.setBirthday(new Date());
try {
String json = objectMapper.writeValueAsString(user);
return objectMapper.readValue(json, User.class);
} catch (JsonProcessingException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
返回结果如下:
{
"userId": 1,
"username": "test",
"birthday": "2021-07-01T08:56:22.242Z"
}
总结
以上就是SpringBoot中Jackson日期格式化的几种用法,包括基本用法、自定义日期格式和全局配置等。通过这些技巧,我们可以在项目中实现常见的日期格式化需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot中Jackson日期格式化技巧分享 - Python技术站