假设我在 JAX-RS 1 环境(带有 Jackson 提供程序的 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> {
...
}
如果Bar
像在
@GET @Path("bar")
public Bar getBar() { return new Bar(...); }
但是当我请求Foo
时
@GET @Path("foo")
public Foo getFoo() { return new Foo(...); }
消息正文作者被忽略。
现在我想要的是MessageBodyWriter
当我返回Foo
或List<Bar>
我认为后者可以通过MessageBodyWriter
为List
案例编写自定义来实现,但对于前一种情况,我无法为包含Bar
字段的所有应用程序类编写消息正文编写器。
关于如何解决这个问题的任何想法?我还尝试在Bar
实例上使用杰克逊序列化程序,但看起来这甚至没有被 RestEasy 注册(然后,我认为这种方式无论如何都太脆弱了)。