个人使用比较习惯的json框架是fastjson,所以spring boot默认的json使用起来就很陌生了,所以很自然我就想我能不能使用fastjson进行json解析呢?
引入fastjson依赖库:
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.15</version> </dependency>
这里要说下很重要的话,官方文档说的1.2.10以后,会有两个方法支持HttpMessageconvert,一个是FastJsonHttpMessageConverter,支持4.2以下的版本,一个是FastJsonHttpMessageConverter4支持4.2以上的版本,具体有什么区别暂时没有深入研究。这里也就是说:低版本的就不支持了,所以这里最低要求就是1.2.10+。
配置fastjon
支持两种方法:
第一种方法就是:
(1)启动类继承extends WebMvcConfigurerAdapter
(2)覆盖方法configureMessageConverters
具体代码如下:
/** * * @author blackCatFish--黑鲶鱼 * @version v.0.1 */ @SpringBootApplication public class ApiCoreApp extends WebMvcConfigurerAdapter { @Override public voidconfigureMessageConverters(List<HttpMessageConverter<?>>converters) { super.configureMessageConverters(converters); FastJsonHttpMessageConverterfastConverter = newFastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = newFastJsonConfig(); fastJsonConfig.setSerializerFeatures( SerializerFeature.PrettyFormat ); fastConverter.setFastJsonConfig(fastJsonConfig); converters.add(fastConverter); } }
第二种方法:
(1)在App.java启动类中,注入Bean : HttpMessageConverters
具体代码如下:
package com.kfit; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; importorg.springframework.boot.autoconfigure.web.HttpMessageConverters; import org.springframework.context.annotation.Bean; import org.springframework.http.converter.HttpMessageConverter; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig; importcom.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; /** * * @author blackCatFish--黑鲶鱼 * @version v.0.1 */ @SpringBootApplication public class ApiCoreApp { @Bean public HttpMessageConvertersfastJsonHttpMessageConverters() { FastJsonHttpMessageConverter fastConverter = newFastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = newFastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); fastConverter.setFastJsonConfig(fastJsonConfig); HttpMessageConverter<?> converter = fastConverter; return new HttpMessageConverters(converter); } public static void main(String[] args) { SpringApplication.run(ApiCoreApp.class, args); } }
那么这时候在实体类中使用@JSONField(serialize=false),是不是此字段就不返回了,如果是的话,那么恭喜你配置成功了,其中JSONField的包路径是:com.alibaba.fastjson.annotation.JSONField。