SpringMVC--配置FastJSON為JSON處理器
阿新 • • 發佈:2019-01-04
springMVC使用fastJson很簡單,在springMVC的配置檔案中作如下配置:
<!-- 啟用預設配置 --> <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <!-- 配置Fastjson支援 --> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>application/json</value> </list> </property> <property name="features"> <list> <value>WriteMapNullValue</value> <value>QuoteFieldNames</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
或者通過註解直接注入FastJsonHttpMessageConverter,通過@Bean注入HandlerAdapter來注入FastJsonHttpMessageConverter,有關HttpMessageConverter相關的知識可以參考springMVC原始碼分析--HttpMessageConverter寫write操作(三)和springMVC原始碼分析--HttpMessageConverter引數read操作(二)
Fastjson的SerializerFeature序列化屬性:@Configuration public class FastJSONMessageConverter { @Bean public HandlerAdapter handlerAdapter(WebBindingInitializer webBindingInitializer){ List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>(); //注入FastJSON FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); List<MediaType> supportedMediaTypes = new ArrayList<MediaType>(); supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); supportedMediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED); supportedMediaTypes.add(MediaType.TEXT_HTML); fastJsonHttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes ); messageConverters.add(fastJsonHttpMessageConverter); RequestMappingHandlerAdapter requestMappingHandlerAdapter = new RequestMappingHandlerAdapter(); //引數及返回值處理 requestMappingHandlerAdapter.setMessageConverters(messageConverters); //引數校驗 requestMappingHandlerAdapter.setWebBindingInitializer(webBindingInitializer); return requestMappingHandlerAdapter; } }
QuoteFieldNames———-輸出key時是否使用雙引號,預設為true
WriteMapNullValue——–是否輸出值為null的欄位,預設為false
WriteNullNumberAsZero—-數值欄位如果為null,輸出為0,而非null
WriteNullListAsEmpty—–List欄位如果為null,輸出為[],而非null
WriteNullStringAsEmpty—字元型別欄位如果為null,輸出為”“,而非null
WriteNullBooleanAsFalse–Boolean欄位如果為null,輸出為false,而非null
別忘了新增Fastjson的包,如果使用Maven,版本可以切換至最新版本,可使用如下設定
示例:<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.37</version> </dependency>
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping("/json")
@ResponseBody
public List<String> test(){
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("sdsd");
list.add("asdads");
return list;
}
}
瀏覽器輸出:["1","2","sdsd","asdads"]