springBoot,預設使用的json解析架構是Jackson。
雖然jackson能夠滿足json的解析,如果想使用熟悉的alibaba的fastjon,我們隻需要在pom檔案中配置maven依賴就好。
<!-- fastjson依賴庫-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
版本可根據自己需要查詢,網址:http://mvnrepository.com/Maven依賴完成之後,我們可以通過兩種方式配置fastjon
方法一:啟動類繼承extends WebMvcConfigurerAdapter,且覆寫configureMessageConverters。
方法二:在啟動類中,注入Bean:HttpMessageConverters。
代碼如下:
package org.lzm.springbootnew;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.util.ArrayList;
import java.util.List;
@EnableScheduling //定時任務
@SpringBootApplicationpublic class SpringbootNewApplication extends WebMvcConfigurerAdapter {
-
public static void main(String[] args) {
-
SpringApplication.run(SpringbootNewApplication.class, args);
-
}
-
/*
-
* // 方法一:extends WebMvcConfigurerAdapter
-
*/
-
@Override
-
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
-
super.configureMessageConverters(converters);
-
//1、先定義一個convert轉換消息的對象
-
FastJsonHttpMessageConverter fastConverter=new FastJsonHttpMessageConverter();
-
//2、添加fastjson的配置資訊,比如是否要格式化傳回的json資料;
-
FastJsonConfig fastJsonConfig=new FastJsonConfig();
-
fastJsonConfig.setSerializerFeatures(
-
//是否需要格式化
-
SerializerFeature.PrettyFormat
-
);
-
//附加:進行中文亂碼(後期添加)
-
List<MediaType> mediaTypeList=new ArrayList<MediaType>();
-
mediaTypeList.add(MediaType.APPLICATION_JSON_UTF8);
-
fastConverter.setSupportedMediaTypes(mediaTypeList);
-
//3、在convert中添加配置資訊
-
fastConverter.setFastJsonConfig(fastJsonConfig);
-
//4、将convert添加到converters
-
converters.add(fastConverter);
-
}
-
/*
-
* 方法二:在啟動類中,注入Bean:HttpMessageConverters
-
*/
-
@Bean
-
public HttpMessageConverters fastJsonHttpMessageConverters(){
-
//1、先定義一個convert轉換消息的對象
-
FastJsonHttpMessageConverter fastConverter=new FastJsonHttpMessageConverter();
-
//2、添加fastjson的配置資訊,比如是否要格式化傳回的json資料;
-
FastJsonConfig fastJsonConfig=new FastJsonConfig();
-
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
-
//附加:進行中文亂碼
-
List<MediaType> fastMedisTypes = new ArrayList<MediaType>();
-
fastMedisTypes.add(MediaType.APPLICATION_JSON_UTF8);
-
fastConverter.setSupportedMediaTypes(fastMedisTypes);
-
//3、在convert中添加配置資訊
-
fastConverter.setFastJsonConfig(fastJsonConfig);
-
HttpMessageConverter<?> converter=fastConverter;
-
return new HttpMessageConverters(converter);
-
}
}
其實代碼的核心是相同的,這是調取的方式不同而已。兩種方式都可以滿足我們對于fastjson的依賴使用。
下面使用@JSONField()注解在實體類中進行驗證
代碼如下。
@JSONField(format = “yyyy-MM-dd”)
private Date birthday;
Controller中代碼如下。
@RequestMapping(“/save”)
public Student save(){
Student student=new Student();
student.setName(“婷婷”);
student.setAge(23);
student.setSex(“女”);
student.setBirthday(new Date());
studentService.save(student);
return student;
}
浏覽器傳回結果:
{
“age”:23,
“birthday”:”2018-07-10”,
“id”:97,
“name”:”婷婷”,
“sex”:”女”
}
除此之外,我們還可以通過@JSONField(serialize = false)來決定字段的顯示與否。設定如下。
@JSONField(serialize = false)
private Date birthday;
如果這樣設定浏覽器傳回結果如下,birthday将不再顯示。
{
“age”:23,
“id”:97,
“name”:”婷婷”,
“sex”:”女”
}