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>

猜你喜欢

转载自blog.csdn.net/myth_g/article/details/82417264