【发布时间】:2012-09-10 00:30:50
【问题描述】:
我想在spring MVC中用jackson序列化一个对象。
我有一个控制器,它返回一个 ObjectTest1,它有一个属性 ObjectTest2。
public class ObjectTest1{
private ObjectTest2;
// setters getters...
}
public class ObjectTest2{
private String value;
// setters getters...
}
public @ResponseBody ObjectTest1 test() throws IOException ...
我有一个映射器,我有一个 ObjectTest2 的序列化程序,我已经用 @JsonSerialize(using = ObjectTest2.class) 注释了 ObjectTest1.getObjectTest2 方法。
它工作正常! 但我想在很多对象中使用这个序列化程序,而不仅仅是在 ObjectTest1 中。
我应该怎么做才能避免在每个 getter 方法中添加注解?可以为 ObjectTest2 的所有属性自动使用 spring 这个序列化程序吗?
更新:
我已经在我的代码中使用了这个:
<mvc:annotation-driven>
在 ajax 响应中正确生成为 json 的对象。 也许我应该尝试用另一种方式解释。
所以。 我有这些对象:
public class DTO{
private InnerThing innerThing;
@JsonSerialize(using=ThingSerializer.class)
public InnerThing getThing(){...}
}
public class InnerThing{
private String value;
}
生成的 json 看起来像:
{"innerThing":{"value":"something"}}
当我写了一个序列化器后,json 是:
{"innerThing":"something"}
没关系,但是要获取第二版json我必须用@JsonSerialize注释DTO类中的getInnerThing方法...
我不想注释所有使用 InnerThing 作为属性的方法。 所以我的问题是,spring 可以自动序列化 InnerThing 类型的每个属性吗?
【问题讨论】:
-
如果 Spring 3 在类路径中找到了 Jackson,并且您有
mvc:annotation-driven、Spring MVC automagically converts every@ResponseBodyreturned object - 您不需要使用@JsonSerialize。
标签: spring-mvc jackson