1、创建实体类User,添加属性跟get、set方法。
private String id;
private String username;
private Date createTime;
2、创建UserController,编写控制层代码
@GetMapping("/getUser")
public List<User> getUser() {
List<User> userList = new ArrayList<User>();
for (int i=1; i<=5; i++) {
User user = new User();
user.setCreateTime(new Date());
user.setUsername("gongj" + i);
user.setId("j" + i);
userList.add(user);
}
return userList;
}
调用接口:http://localhost:8080/getUser
image.png该结果显然不是我们需要的,所以我们需要格式化一下。
第一种 使用注解:
private String id;
private String username;
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
private Date createTime;
pattern:是你需要转换的时间日期的格式
timezone:是时间设置为东八区,避免时间在转换中有误差
调用接口:http://localhost:8080/getUser
image.png完成,但是这种也有不好的地方,如果我有一百个实体中都有Date类型,那就要在一百个实体加入注解。
第二种 修改默认配置
所有的json生成都离不开相关的HttpMessageConverters
spring boot 默认使用的jackson,并对默认做了配置。所以我们来修改一下。
ctrl+shift+h 搜索 JacksonHttpMessageConvertersConfiguration
image.png
该类中这个方法就是用来处理json的。
image.png
那怎么做呢!springBoot是如果你没提供,就使用springBoot默认提供的,你提供了,springBoot就使用你的。
新建MvcConfig
import java.text.SimpleDateFormat;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.fasterxml.jackson.databind.ObjectMapper;
@Configuration
public class MvcConfig {
@Bean
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverterConfiguration() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper om = new ObjectMapper();
//全局修改josn时间格式
om.setDateFormat(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"));
converter.setObjectMapper(om);
return converter;
}
我们提供了一个MappingJackson2HttpMessageConverter ,所以springboot就会使用我们提供的。
将User实体的注解注释
image.png调用接口:http://localhost:8080/getUser image.png
如我们所愿。
也可以提供ObjectMapper
import java.text.SimpleDateFormat;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.fasterxml.jackson.databind.ObjectMapper;
@Bean
ObjectMapper objectMapper() {
ObjectMapper om = new ObjectMapper();
om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
return om;
}
调用接口:http://localhost:8080/getUser
注意:这种方法是全局修改
第三种 application.yml或者properties中修改默认的配置
yml:
spring:
jackson:
date-format: yyyy-MM-dd #如果使用字符串表示,用这行设置格式
timezone: GMT+8
properties:
spring.jackson.date-format=yyyy-MM-dd HH:mm
spring.jackson.time-zone=GMT+8
效果:
image.png
如果上面第二种和第三种方式配置同时存在,第二种会起作用。
如果三种方式都存在的时候,以实体类中注解格式为主。
使用fastjson
二、加入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 将springBoot默认的json处理方式排除 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
使用注解
private String id;
private String username;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
image.png
使用java配置
@Bean
FastJsonHttpMessageConverter FastJsonHttpMessageConverter() {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
FastJsonConfig config = new FastJsonConfig();
config.setDateFormat("yyyy-MM-dd");
converter.setFastJsonConfig(config);
return converter;
}
网友评论