2012-05-23 9 views
6

私は現在ジャージー& RESTサービスを作成するために使用しています。 Resourceメソッドがapplication/jsonを生成し、POJOが返された時点で、オブジェクトはJSONに正しくシリアル化され、クライアントに応答が返されます。ジャージー&ジャクソン - リソース変更ジャクソン出力

私が今やっているのは、ジャージーです。クエリアパラムが来たら(「インデント」と言うと)、私はジャクソンにJSONを「きれいな形式、別名インデントされた」ようにシリアル化するよう伝えます。 SerializationConfig.Feature.INDENT_OUTPUTを使用してJSONマッパーを設定することで、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では、カスタムオブジェクトマッパーの入手方法とアクセス方法を知ることができます。 –