【发布时间】:2012-09-16 07:03:32
【问题描述】:
我使用 Spring MVC 3.1,默认情况下使用 Jackson 进行 JSON-Java 转换。
我需要为以下内容创建自定义转换:
- java.util.List(适用于各种不同的类型)。
- 枚举到字符串
- java.util.Calendar
我遇到了几种创建自定义转换器的不同方法:
-
如here 所述,或多或少地创建一个自定义ObjectMapper:
公共类 CustomObjectMapper 扩展 ObjectMapper...
然后将 MappingJacksonHttpMessageConverter 添加到我的 servlet-context 并使用我的自定义 ObjectMapper 注册它:
然后我想我需要在我的自定义 objectMapper 中有一些特定的实现(它应该是什么样子?)。
- 第二种方法是关于扩展 FormattingConversionServiceFactoryBean 并创建我自己的转换器(实现 org.springframework.core.convert.converter.Converter 的类),如 here 所述。
更新 1: 我见过的另一种方法是子类 MappingJacksonHttpMessageConverter 并覆盖 getJavaType 方法,如here 所述。为此,我必须将我的自定义转换器添加到转换器列表中:
<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 注释(据我所知,在这种情况下这还不够)之外,我应该在我的服务器中做什么?
【问题讨论】:
标签: json spring-mvc jackson