2013-01-31 43 views
1

我使用Jackson作爲JSON提供者和Apache CXF。我想使用Jackson mix-ins來調整REST控制器返回的JSON結構。混合插件將應用於域對象(未註釋)以在序列化期間忽略某些屬性。在Apache CXF中使用動態Jackson Mix-in

混合插件的所有示例都處理它們的編程應用程序,您可以在其中創建ObjectMapper對象並在運行時對其應用混合插件。在我的REST層中,我沒有以編程方式使用Jackson。它被註冊爲CXF的JSON提供者(通過藍圖XML--這是OSGI環境)。

我的問題是如何應用mix-ins到Jackson而不必顯式創建ObjectMapper並調用writeValue()。另外,如何動態地應用混合,以允許REST控制器根據請求參數返回同一個域對象的不同表示?

謝謝

邁克爾

回答

0

檢查的Javadoc上JacksonJsonProvider

ObjectMapper使用可以以多種方式進行配置:

  • 通過明確地傳遞映射器使用在構造函數中
  • By e xplictly設置mapMap使用setMapper(com.fasterxml.jackson.databind.ObjectMapper)
  • 通過定義返回ObjectMappers的JAX-RS提供程序。
  • 這樣做上面這些都不是,在這種情況下,默認映射器實例構造(和配置如果配置方法被調用)
+0

根據JavaDoc我不明白這是如何回答這個問題。你能解釋一下更詳細一點嗎?如何配置我的serviceBean,它使用方法'@GET @Path(「{id}」)時返回完整的User對象用戶獲得(@PathParam(「id」)字符串id)',並且在使用方法時只有一些屬性'@GET Response getAllUsers()'? – Nabor

+0

問題是如何配置CXF用於序列化的ObjectMapper。我相信Javadoc回答這個問題,你的問題是不同的。在你的情況下,你應該看看傑克遜的JSON視圖功能。您將爲部分User對象創建視圖並使用@JsonView(Partial.class)註釋屬於它的字段,然後註釋應使用@JsonView(Partial.class)返回部分對象的JAX-RS方法)' – HiJon89