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操作(二)​


@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;
}
}

Fastjson的SerializerFeature序列化属性: 


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"]