前提
springboot默認自帶json解析框架,默認使用jackson,如果使用fastjson,可以按照下列方式配置使用
1.引入fastjson依賴庫:
maven:
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.46</version> </dependency> </dependencies>
gradle:
compile("com.alibaba:fastjson:${fastJsonVersion}")
ext {
fastJsonVersion = '1.2.46'
}
注: 這里要說下很重要的話,官方文檔說的1.2.10以后,會有兩個方法支持HttpMessageconvert,一個是FastJsonHttpMessageConverter,支持4.2以下的版本,一個是FastJsonHttpMessageConverter4支持4.2以上的版本,具體有什么區別暫時沒有深入研究。這里也就是說:低版本的就不支持了,所以這里最低要求就是1.2.10+
2.在啟動類中配置
2.1配置方式一(通過繼承的方式)
1、啟動類繼承WebMvcConfigurerAdapter
2、重寫configureMessageConverters方法
@SpringBootApplication @EnableDiscoveryClient @EnableScheduling public class MemberApplication extends WebMvcConfigurerAdapter { /** * 配置FastJson為方式一 * @return*/ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { super.configureMessageConverters(converters); /* * 1、需要先定義一個convert轉換消息的對象 2、添加fastJson的配置信息,比如:是否要格式化返回json數據 3、在convert中添加配置信息 * 4、將convert添加到converters當中 * */ // 1、需要先定義一個·convert轉換消息的對象; FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); // 2、添加fastjson的配置信息,比如 是否要格式化返回json數據 FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); // 3、在convert中添加配置信息. fastConverter.setFastJsonConfig(fastJsonConfig); // 4、將convert添加到converters當中. converters.add(fastConverter); } public static void main(String[] args) { SpringApplication.run(MemberApplication.class, args); } }
注:開發中為了統一管理配置,可以放入配置類中,啟動類只做啟動的功能
@Configuration public class HttpConverterConfig { @Bean public HttpMessageConverters fastJsonHttpMessageConverters() { // 1.定義一個converters轉換消息的對象 FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); // 2.添加fastjson的配置信息,比如: 是否需要格式化返回的json數據 FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); // 3.在converter中添加配置信息 fastConverter.setFastJsonConfig(fastJsonConfig); // 4.將converter賦值給HttpMessageConverter HttpMessageConverter<?> converter = fastConverter; // 5.返回HttpMessageConverters對象 return new HttpMessageConverters(converter); } }
2.2配置方式二(通過@Bean注入的方式)
在App.java啟動類中,注入Bean : HttpMessageConverters
@SpringBootApplication @EnableDiscoveryClient @EnableScheduling public class MemberApplication { /** * 配置FastJson方式二 * @return HttpMessageConverters */ @Bean public HttpMessageConverters fastJsonHttpMessageConverters() { // 1.定義一個converters轉換消息的對象 FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); // 2.添加fastjson的配置信息,比如: 是否需要格式化返回的json數據 FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); // 3.在converter中添加配置信息 fastConverter.setFastJsonConfig(fastJsonConfig); // 4.將converter賦值給HttpMessageConverter HttpMessageConverter<?> converter = fastConverter; // 5.返回HttpMessageConverters對象 return new HttpMessageConverters(converter); } public static void main(String[] args) { SpringApplication.run(MemberApplication.class, args); } }
在pojo類中:
private int id; private String name; //com.alibaba.fastjson.annotation.JSONField @JSONField(format="yyyy-MM-dd HH:mm") private Date createTime;//創建時間. /* * serialize:是否需要序列化屬性. */ @JSONField(serialize=false) private String remarks;//備注信息.
那么這時候在實體類中使用@JSONField(serialize=false),是不是此字段就不返回了,如果是的話,那么恭喜你配置成功了,其中JSONField的包路徑是:com.alibaba.fastjson.annotation.JSONField。
參考:
