具体MessageBodyWriter说我有在一个JAX-RS 1个环境(RestEasy的2与杰克逊提供商)中的数据类是这样的:用于现场
class Foo {
int id;
String name;
Bar bar;
...
}
与Bar
感:
class Bar {
int one;
String two;
}
现在我想要Bar
以特殊方式序列化(可能取决于所请求的媒体类型(或根据月相),我会编写一个MessageBodyWriter<Bar>
@Provider
@Produces("application/json")
public class BarWriter implements MessageBodyWriter<Bar> {
...
}
如果请求对自己喜欢的
@GET @Path("bar")
public Bar getBar() { return new Bar(...); }
Bar
但是,当我要求Foo
在
@GET @Path("foo")
public Foo getFoo() { return new Foo(...); }
邮件正文作家被忽略,这工作得很好。
现在我想的是,也使用这个MessageBodyWriter
,当我返回Foo
或List<Bar>
我认为后者可以通过只写一个自定义MessageBodyWriter
的List
情况下可以实现,但对于前一种情况我不能为包含Bar
字段的所有应用程序类编写邮件正文编写器。
关于如何解决这个问题的任何想法?我还试图在Bar
实例上使用Jackson序列化程序,但看起来它甚至没有被RestEasy注册(然后,我认为这种方式太脆弱了)。
感谢您的解释。可能痛点显然是非递归性。 我已经在考虑使用JacksonSerializer,但无论出于何种原因,由于我仍在调查的任何原因,RE没有注册。 至少我并不完全偏离轨道:) – 2013-03-05 19:08:03
使用RestEasy,确保您实际上已经使用代码部署了Jackson库(除了resteasy-jackson提供程序库)。我假设你用'@JsonSerialize(using = MyCustomSerializer.class)'注释了你的bean。 – Perception 2013-03-05 19:11:10
感知 - 有趣;会尝试。你知道是否有需要的最低版本的杰克逊库?是的,我以这种方式注释了他们。 – 2013-03-05 20:42:04