相当于杰克逊的莫西ACCEPT_SINGLE_VALUE_AS_ARRAY?(Equivalent

2019-10-21 08:42发布

我使用的是新泽西州2.10.4和2.5.2的EclipseLink(包括GlassFish的4.1捆绑在一起)。 我使用莫西的JSON(UN)编组。 我想有消耗一个单一的资源或同一类型的多个资源的阵列REST Web服务。

这是不可能使用两种不同的JAX-RS方法,带有签名的(我代替我的实际资源/ URL与通用的客户示例-这个类使用JAXB注释)由于URL /介质类型组合的模糊性( 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),I得到的IllegalArgumentException: argument type mismatch时,客户端发送的单个元件代替阵列。

我发现这个问题,表明我是杰克逊,还有一个特点ACCEPT_SINGLE_VALUE_AS_ARRAY似乎对付正是这个问题。 我找不到在莫西的等价物,是有办法做到这一点?

文章来源: Equivalent to Jackson's ACCEPT_SINGLE_VALUE_AS_ARRAY in MOXy?