jersey - 如何使用具有多个自定义类型的@FormParam的资源方法

时间:2013-06-02 12:26:42

标签: 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
{
        ...
}

如果我将参数类型更改为String然后使用Jackson反序列化,我可以将json参数反序列化为java实例,但我也想对其他方法执行此操作并自动完成。

我尝试使用Custom Java type for consuming request parameters中使用的方法,但我无法使其正常工作。

1 个答案:

答案 0 :(得分:0)

您可以使用自定义类型映射器。

请参阅this answer

默认情况下,Jersey会尝试使用JAXB映射收到的json对象表示。很奇怪你必须注释你的对象。