我想使用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,而我不想要。
有解决办法吗?谢谢。
您应该能够构建一个自定义的MappingJackson2HttpMessageConverter
bean,在其中插入Jackson用于序列化方法,FlexJSON用于反序列化方法。