具體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