1. 經過測試SpringBoot中預設的Jackson是不支援将沒有手動定義getter和setter的類進行JSON字元串序列化,而fastjson可以
2. jackson 不支援對沒有getter和setter方法的對象進行對應值的注入,而fastjson可以
3. jackson是可以将對象轉換為JSON字元串,但是屬性名經過jackson轉換後key都變成了小寫,即fuid而非fUid;
推薦方式Demo:
@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);
//fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue);
//3進行中文亂碼問題
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
// 3.在converter中添加配置資訊
fastConverter.setSupportedMediaTypes(fastMediaTypes);
fastConverter.setFastJsonConfig(fastJsonConfig);
// 4.将converter指派給HttpMessageConverter
HttpMessageConverter<?> converter = fastConverter;
// 5.傳回HttpMessageConverters對象
return new HttpMessageConverters(converter);
}
}
配置方式一(通過繼承的方式)
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);
}
配置方式三(啟動類通過@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);
}
}