相当于MOXy中Jackson的ACCEPT_SINGLE_VALUE_AS_ARRAY?

时间:2014-12-02 10:35:18

标签: java rest jersey moxy

我使用的是Jersey 2.10.4和EclipseLink 2.5.2(两者都与GlassFish 4.1捆绑在一起)。我使用MOXy进行JSON(联合国)编组。我希望拥有一个REST Web服务,它可以使用单个资源,也可以使用同一类型的多个资源数组。

由于URL /媒体类型组合的模糊性,不可能使用具有这种签名的两种不同JAX-RS方法(我用通用客户示例替换了我的实际资源/ URL - 此类使用JAXB注释) (A resource model has ambiguous (sub-)resource method for HTTP method POST and input mime-types ...):

1)

@POST
@Path( "customers" )
@Consumes( { MediaType.APPLICATION_JSON } )
public void addCustomer( Customer newCustomer )
{
  [...]
}

2)

@POST
@Path( "customers" )
@Consumes( { MediaType.APPLICATION_JSON } )
public void addCustomers( List<Customer> newCustomers )
{
  [...]
}

但如果我只使用两个签名中的一个,我就不能让服务同时接受单个资源元素和元素数组:

如果我使用签名1),当客户端发送数组而不是单个元素时,我得到ClassCastException这样的Customer cannot be cast to java.util.Collection

如果我使用签名2),当客户端发送单个元素而不是数组时,我得到IllegalArgumentException: argument type mismatch

我发现this问题告诉我,在杰克逊,有一个功能ACCEPT_SINGLE_VALUE_AS_ARRAY似乎正好处理这个问题。我无法在MOXy中找到相同的东西,有没有办法实现这个目标?

0 个答案:

没有答案