1. 程式人生 > >ssm替換預設json轉換器為fastjson

ssm替換預設json轉換器為fastjson

 <mvc:annotation-driven>
        <mvc:message-converters
                register-defaults="true">
            <!-- 避免IE執行AJAX時,返回JSON出現下載檔案 -->
            <!-- FastJson -->
            <bean id="fastJsonHttpMessageConverter"
                  class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <!-- 這裡順序不能反,一定先寫text/html,不然ie下出現下載提示 -->
                        <value>application/json;charset=UTF-8</value>
                    </list>
                </property>
                <property name="features">
                    <array
                            value-type="com.alibaba.fastjson.serializer.SerializerFeature">
                        <!-- 避免迴圈引用 -->
                        <value>DisableCircularReferenceDetect</value>
                        <!-- 是否輸出值為null的欄位 -->
                        <!-- <value>WriteMapNullValue</value>-->
                        <!-- 數值欄位如果為null,輸出為0,而非null -->
                        <!-- <value>WriteNullNumberAsZero</value>-->
                        <!-- 字元型別欄位如果為null,輸出為"",而非null -->
                        <value>WriteNullStringAsEmpty</value>
                        <!-- List欄位如果為null,輸出為[],而非null -->
                        <value>WriteNullListAsEmpty</value>
                        <!-- Boolean欄位如果為null,輸出為false,而非null -->
                        <!--  <value>WriteNullBooleanAsFalse</value>-->
                    </array>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

預設配置是以上,想處理序列化以後字串為null的情況返回空字串,但是怎麼也不生效.....使用程式碼方式配置也不可以....後來發現是順序錯了...

 <mvc:annotation-driven conversion-service="conversionService"/>
 <bean id="conversionService"     
 class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <ref bean="dateConvert"/>
            </set>
        </property>
    </bean>

因為我配了一個接收時間轉換的配置,如果把這個配置寫在上面json轉換前面的話,則json配置失效.所以這個順序導致了錯誤;

但是如果把這個放在前面json轉換器成功了,但是這個時間轉換失效了..所以要用下面的方式,寫到一起:

 <mvc:annotation-driven conversion-service="conversionService">
        <mvc:message-converters
                register-defaults="true">
            <!-- 避免IE執行AJAX時,返回JSON出現下載檔案 -->
            <!-- FastJson -->
            <bean id="fastJsonHttpMessageConverter"
                  class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <!-- 這裡順序不能反,一定先寫text/html,不然ie下出現下載提示 -->
                        <value>application/json;charset=UTF-8</value>
                    </list>
                </property>
                <property name="features">
                    <array value-type="com.alibaba.fastjson.serializer.SerializerFeature">
                        <value>WriteNullStringAsEmpty</value>
                        <value>WriteNullListAsEmpty</value>
                        <value>WriteMapNullValue</value>
                    </array>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>