1. SpringMVC 集成fastjson
在SpringMVC中集成fastjson, 集成之后,注解 @ResponseBody 返回的對象就能夠自動解析成 json數(shù)據(jù)返回。
fastjson 的效率要高于 jackson、gson
配置 springmvc.xml 文件
<!--注冊映射器,適配器,掃描注解-->
<mvc:annotation-driven conversion-service="conversionService">
<mvc:message-converters register-defaults="true">
<!--配置fastJson -->
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
- 添加注解 @ResponseBody
@RequestMapping(value = "/ajax")
public @ResponseBody
Customer ajax(Integer id, HttpServletResponse response) {
Customer customer = customerService.queryCustomerById(id);
response.setContentType("text/html;charset=utf-8");
return customer;
}
返回的數(shù)據(jù)格式:
{
"cust_address": "北京三里橋",
"cust_createtime": 1460104321000,
"cust_id": 16,
"cust_industry": "2",
"cust_level": "22",
"cust_linkman": "馬化騰",
"cust_mobile": "13888888888",
"cust_name": "劉強東",
"cust_phone": "0108888887",
"cust_source": "6",
"cust_zipcode": "123456"
}
2. 配置 fastjson 后,返回字符串時會在外面強制添加雙引號
例如:
- 如果返回的字符串為
哈哈, 最終返回得到的數(shù)據(jù)是"哈哈" - 返回的字符串中包含雙引號,例如
{"name":"ethan"},則 fastjson處理后,最終返回的結(jié)果是"{\"name\":\"ethan\"}"
要想得到原始字符串,解決辦法:
添加配置字符串轉(zhuǎn)換器StringHttpMessageConverter
<!--注冊映射器,適配器,掃描注解-->
<mvc:annotation-driven conversion-service="conversionService">
<mvc:message-converters register-defaults="true">
<!--配置返回字符串,編碼設(shè)置為UTF-8-->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value = "text/html;charset=UTF-8" />
</bean>
<!--配置fastJson-->
...
</mvc:message-converters>
</mvc:annotation-driven>