Spring MVC使用fastjson做訊息轉換器,與預設Jackson的區別
阿新 • • 發佈:2019-01-05
spring mvc支援自定義HttpMessageConverter接收JSON格式的資料,使用fastjson作為訊息裝換器,只需要在spring的配置檔案中加入如下配置程式碼(需引入fastjson依賴包):
<mvc:annotation-driven>
<!--設定不使用預設的訊息轉換器-->
<mvc:message-converters register-defaults="false">
<!--配置spring的轉換器-->
<bean class="org.springframework.http.converter.StringHttpMessageConverter" />
<bean class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter" />
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
<bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter" />
<!--配置fastjson中實現HttpMessageConverter介面的轉換器-->
<bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4" >
<!--加入支援的媒體型別,返回contentType-->
<property name="supportedMediaTypes">
<list>
<!--這裡順序不能反,一定要先寫text/html,不然IE下會出現下載提示-->
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
使用fastjson和Jackson的區別如下:
下面的請求程式碼:
@ResponseBody
@RequestMapping("/testJson")
public Map<String, Object> testJson(String id) {
Map<String, Object> map = new HashMap<>();
Map<String, Object> data = new HashMap<>();
data.put("id", id);
map.put("result", 0);
map.put("message", "成功 success");
map.put("data", data);
return map;
}
訪問的時候如果不傳id引數,http://localhost:8080/demo/testJson
fastjson返回:
{
"result": 0,
"data": {},
"message": "成功 success"
}
jackson返回:
{
"result": 0,
"data": {
"id": null
},
"message": "成功 success"
}