springboot-json转换
程序员文章站
2022-07-12 20:59:09
...
springboot 的json数据传输 后台返回对象,前台得到为json格式 前台请求数据为json,后台自动封装为对象
Jackson
springboot
中默认依赖了spring-boot-starter-json
,所以我们可以不用再进行配置就可以使用。
但是有些时候,我们使用某些特殊的数据传输,比如Date
对象,前台获取到的就是2020-01-07T07:50:27.440+0000
格式,可以使用@JsonFormat(pattern = "yyyy-MM-dd")
在Date
对象中进行格式化,但如果对象多了,每一个都打注解,就很麻烦,先变格式,一个一个改,我们可以自定义转换器进行格式化:
依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
//springboot 自带的json转化配置,可在这统一配置格式
@Bean
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
converter.setObjectMapper(objectMapper);
return converter;
}
或者:
//或者只需要配置ObjectMapper
@Bean
ObjectMapper objectMapper(){
ObjectMapper om = new ObjectMapper();
om.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
return om;
}
自己创建转换器,并定义格式,如果我们自己定义了,springboot
的默认配置就会失效这样就可以统一管理格式,并一劳永逸。
Gson
如果不是使用自带的Jackson
的话,使用Gson
,只需要除去spring-boot-starter-json
依赖导入Gson
的依赖即可,springboot
为Gson
也提供了自动配置,导入依赖即可用,自定义转换器:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
//使用GSON的json转换 配置
@Bean
GsonHttpMessageConverter gsonHttpMessageConverter(){
GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
GsonBuilder gson = new GsonBuilder();
gson.setDateFormat("yyyy/MM/dd");
converter.setGson(gson.create());
return converter;
}
或者:
@Bean
Gson gson(){
Gson gson = new GsonBuilder().setDateFormat("yyyy/MM/dd").create();
return gson;
}
fastJson
如果要使用fastJson
为我们的转换器的话,则必须要配置才能使用,上面两种springboot
都提供了默认配置,而fastJson
则没有任何支持,使用的话先排除spring-boot-starter-json
也就是Jackson
的依赖,并导入fastJson
的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<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>
//使用fastjson为项目的json转换器 必须要配置
@Bean
FastJsonHttpMessageConverter fastJsonHttpMessageConverter(){
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setDateFormat("yyyy-MM-dd");
converter.setFastJsonConfig(fastJsonConfig);
return converter;
}
否则会返回对象时会报错: