JSON是先后端数据交互最流行的格式。在目前的项目开发中,常见的JSON的转换器有三种(json-lib因为自身的缺陷基本不用,最普遍的仍是Jackson):java
在springboot中默认添加了jackson-databind
做为JSON的处理器,不须要配置其余处理器。若是开发者配置了MappingJackson2HttpMessageConverter
则使用开发者本身配置的,不然系统return new MappingJackson2HttpMessageConverter(objectMapper)
,源码以下:web
@Configuration
class JacksonHttpMessageConvertersConfiguration {
//中间代码省略
@Bean
@ConditionalOnMissingBean(
value = {MappingJackson2HttpMessageConverter.class},
ignoredType = {"org.springframework.hateoas.mvc.TypeConstrainedMappingJackson2HttpMessageConverter", "org.springframework.data.rest.webmvc.alps.AlpsJsonHttpMessageConverter"}
)
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(ObjectMapper objectMapper) {
return new MappingJackson2HttpMessageConverter(objectMapper);
}
}
}
复制代码
@Configuration
public class WebMvcConfig implements WebMvcConfigurer{
@Bean
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setJsonPrefix("aaa>>>");
return converter;
}
}
复制代码
对于字段忽略和日期格式化等常见需求能够使用@JsonIgnore
和@JsonFormat
解决。spring
springboot默认提供了Gson的自动转化类GsonHttpMessageConverter
,添加依赖后与使用Jackson无异。 使用Gson须要去除默认的jackson-databind
并添加Gson依赖:json
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
<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自定义方式:后端
@Configuration
public class WebMvcConfig implements WebMvcConfigurer{
@Bean
GsonHttpMessageConverter gsonHttpMessageConverter() {
GsonBuilder builder = new GsonBuilder();
builder.setDateFormat("yyyy-MM-dd");
return new GsonHttpMessageConverter(builder.create());
}
}
复制代码
不一样于jackson以及gson,fastjson要求开发者必须手动配置HttpMessageConverter。首先排除jackson,而后加入gson依赖:tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjosn</artifactId>
<version>1.2.4</version>
</dependency>
复制代码
fastjson自定义方式:
手动配置convert。也能够重写configureMessageConverters方法实现对HttpMessageConverter的配置springboot
@Configuration
public class WebMvcConfig implements WebMvcConfigurer{
@Bean
FastJsonHttpMessageConverter fastJsonHttpMessageConverter() {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
FastJsonConfig config = new FastJsonConfig();
config.setDateFormat("yyyy/MM/dd");
converter.setFastJsonConfig(config);
return converter;
}
}
复制代码