0

私は jersey を使用しており、Resource クラスに複数のパラメーターを持つメソッドがあります。これらのパラメーターは を使用して入力されます@FormParamが、問題は、パラメーターの型がカスタム Java 型であり、一部のプリミティブやString. jsonパラメータの値をカスタム Java 型に変換したいと考えています。を使用する@Cosume(MediaType.APPLICATION_JSON)と、複数のパラメーターを使用できなくなり、それを削除すると、パラメーターを json から Java インスタンスに変換できなくなります。

@POST @Path("/add")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public String add(@FormParam("source") BookEntity source, @FormParam("author") AuthorEntity a) throws JsonGenerationException, JsonMappingException, IOException, TransformationException
{
        ...
}

パラメータの型をに変更してStringJacksonの逆シリアル化を使用すると、jsonパラメータをJavaインスタンスに逆シリアル化できますが、他のメソッドに対してもそれを行い、自動的に実行したいと考えています。

リクエスト パラメータを使用するためにカスタム Java タイプで使用されるアプローチを使用しようとしましたが、機能させることができません。

4

1 に答える 1

0

カスタム タイプ マッパーを使用できます。

この回答を参照してください

とにかく、Jersey はデフォルトで、受信した json オブジェクト表現を JAXB を使用してマップしようとします。明らかに、オブジェクトに注釈を付ける必要があります。

于 2013-07-04T21:34:39.387 に答える