1

我想使用 Jackson 将 JSON 字符串从客户端请求反序列化为 Java 对象,并使用 FlexJson 序列化 Java 对象以进行响应。

简而言之,问题是:如何设置 Spring 以仅将 Jackson 用于请求处理而不用于响应?

在 servlet-context.xml 我有:

<beans:bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <beans:property name="messageConverters">
        <beans:list>
            <beans:ref bean="jsonMessageConverter"/>
        </beans:list>
    </beans:property>
</beans:bean>

<beans:bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
</beans:bean> 

在控制器中:

@RequestMapping(value = "settings")
public @ResponseBody String getSomeData(@RequestBody UserData userData) { 
    // userData is automatically deserialized by Jackson   
    MyView viewForClient = new MyView(userData);        

    return new JSONSerializer().include(MyView.SERILIZABLE_FIELDS).exclude("*", "*.class").serialize(viewForClient); // here I don't want Jackson to handle the response        
}

但是通过这种方式,Jackson 也将我不想要的 FlexJSON 已经转换的响应转换为 JSON。

有什么解决办法吗?谢谢。

4

1 回答 1

1

您应该能够构建一个自定义MappingJackson2HttpMessageConverterbean,在其中为序列化方法插入 Jackson,为反序列化方法插入 FlexJSON。

于 2014-06-06T15:08:50.173 回答