如何将mappingJacksonHttpMessageConverter的内容类型从application / json; charset = UTF-8更改为application / json

时间:2011-04-20 03:58:52

标签: android json spring rest spring-mvc

我有一个Spring REST Web服务,在我的控制器中,我使用MappingJacksonHttpMessageConverter将我的返回模型转换为JSON。但是当我使用firebug进行检查时,会有Content-Type=application/json;charset=UTF-8

另外我试图通过使用spring android rest模板从Android客户端解析这个结果,但我一直得到:

  

无法提取回复:没有   找到合适的HttpMessageConverter   对于响应类型   [xxx.SamplePageActivity $ Result]和   内容类型   应用/ JSON;字符集= UTF-8]

可能是android客户端上的MappingJacksonHttpMessageConverter完全期望类型application/json

所以我的问题是如何将spring的MappingJacksonHttpMessageConverter的返回内容类型从application/json;charset=UTF-8更改为application/json

这是我的视图解析器配置。它可能很有用:

<beans:bean
    class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <beans:property name="mediaTypes">
        <beans:map>
            <beans:entry key="html" value="text/html" />
            <beans:entry key="json" value="application/json" />
        </beans:map>
    </beans:property>

    <beans:property name="viewResolvers">
        <beans:list>
            <beans:bean
                class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <beans:property name="prefix" value="/WEB-INF/views/" />
                <beans:property name="suffix" value="${dispatcher.suffix}" />
            </beans:bean>
        </beans:list>
    </beans:property>

    <beans:property name="defaultViews">
        <beans:list>
            <beans:bean
                class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
        </beans:list>
    </beans:property>
</beans:bean>

<beans:bean id="messageAdapter"
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <beans:property name="messageConverters">
        <beans:list>
            <!-- Support JSON -->
            <beans:bean
                class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
        </beans:list>
    </beans:property>
</beans:bean>

1 个答案:

答案 0 :(得分:3)

您可以使用supportedMediaTypes属性更精确地配置MappingJacksonHttpMessageConverter,如下所示:

<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
                   <property name="supportedMediaTypes">
                        <list>
                          <bean class="org.springframework.http.MediaType">
                             <constructor-arg value="application" />
                             <constructor-arg value="json" />
                             <constructor-arg value="#{T(java.nio.charset.Charset).forName('UTF-8')}"/>
                           </bean>
                        </list>
                     </property>
            </bean>

根据文档(http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/http/MediaType.html)允许您按顺序设置类型,子类型和字符集 -