我使用 Spring MVC 3.1,默认情况下使用 Jackson 进行 JSON-Java 转换。
我需要为以下内容创建自定义转换:
- java.util.List(适用于各种不同的类型)。
- 枚举到字符串
- java.util.日历
我遇到了几种创建自定义转换器的不同方法:
正如这里或多或少所描述的,创建一个自定义 ObjectMapper:
公共类 CustomObjectMapper 扩展 ObjectMapper...
然后将 MappingJacksonHttpMessageConverter 添加到我的 servlet-context 并使用我的自定义 ObjectMapper 注册它:
然后我想我需要在我的自定义 objectMapper 中有一些特定的实现(它应该是什么样子?)。
- 第二种方法讨论扩展 FormattingConversionServiceFactoryBean 并创建我自己的转换器(实现 org.springframework.core.convert.converter.Converter 的类),如此处所述。
更新 1:我见过的另一种方法是子类 MappingJacksonHttpMessageConverter 并覆盖 getJavaType 方法,如此处所述。为此,我必须将我的自定义转换器添加到转换器列表中:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="com.yl.app.CustomMappingJacksonHttpMessageConverter">
</list>
</property>
推荐哪种方法?只有这些吗,有没有更好的方法呢?
更新 2:
我还是不明白。在实践中,假设我有 A 类和 B 类。
A 类持有 B 的列表:
public class A {
public List<B> list;
}
我想将 A 类型的对象返回给我的客户。除了添加 @ResponseBody 注释(据我所知,在这种情况下这还不够)之外,我应该在我的服务器中做什么?