默认springboot中,当前端传过来数据,转换为JSON时,默认使用的是框架自带的jackson,当我们想要使用alibaba的fastjson时,可以做如下配置。
引入依赖
- 先在pom.xml中引入相关依赖
<!--alibaba json-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.36</version>
</dependency>
配置
两种方式
- bean注入HttpMessageConverters:
/*
* 启用fastjson 的转换
* */
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
fastConverter.setFastJsonConfig(fastJsonConfig);
return new HttpMessageConverters(fastConverter);
}
2.继承WebMvcConfigurerAdapter,重写configureMessageConverters方法
@Configuration
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
//自定义配置...
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss"); // 自定义时间格式
fastJsonConfig.setSerializerFeatures(
//配置美观的输出格式
SerializerFeature.PrettyFormat,
//配置输出空值
SerializerFeature.WriteMapNullValue,
//将字符串类型字段的空值输出为空字符串 ""
SerializerFeature.WriteNullStringAsEmpty);
converter.setFastJsonConfig(fastJsonConfig);
converters.add(converter);
}
}
不序列化某个字段
比如我们把user表的数据取出来给前台,密码的字段肯定是不能显示的,这样我们可以配置,让某个字段不序列化
@JSONField(serialize=false)
private String pwd;
这样,就可以启用fasjson作为默认的转换器了