2012-05-23 141 views
6

我目前正在使用傑克遜澤西&創建REST服務。當Resource方法生成application/json並返回一個POJO時,它將該對象正確序列化爲JSON並將響應返回給客戶端。我想要做的是設置澤西島,所以當一個查詢參數進來(讓我們說「縮進」),我可以告訴傑克遜序列化JSON在一個「漂亮的格式,又名縮進」。通過使用SerializationConfig.Feature.INDENT_OUTPUT配置JSON映射器,您可以輕鬆地告訴Jackson執行此操作。澤西傑克遜 - 資源修改傑克遜輸出

問題是,我如何在每個請求的基礎上使用queryparam並使用它來修改Jackson的輸出?

回答

1

事情是這樣的:

@GET 
@Path("path/to/rest/service") 
@Produces("application/json") 
public Response getSomething(
     @DefaultValue("false") @QueryParam("indent") boolean indent, ...) { 
    ... 
    if (indent) { 
     objectMapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true); 
    } 
    ... 
} 

是你在尋找什麼?

+1

問題在於訪問objectMapper。 – William

+0

遇到同樣的問題,如何獲取objectMapper? –

+1

對象映射器通常是共享的,所以您不應該更改每個請求庫的配置。在http://stackoverflow.com/questions/18872931/custom-objectmapper-with-jersey-2-2-and-jackson-2-1你可以知道如何擁有自定義對象映射器以及如何訪問它。 –