1. 程式人生 > >Spring MVC使用fastjson做訊息轉換器,與預設Jackson的區別

Spring MVC使用fastjson做訊息轉換器,與預設Jackson的區別

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