Arrays 发送一个json数组,并将其作为List类型的jaxb jersey参数接收

Arrays 发送一个json数组,并将其作为List类型的jaxb jersey参数接收,arrays,json,jaxb,jersey,Arrays,Json,Jaxb,Jersey,你好,对不起,如果已经问过了,但是找不到 这是我的问题,我不知道有多少字段将发送到我的Web服务,因为它们是动态的。因此,我想向jersey jaxb ressource发送一个json数组。由于我的json数组中的对象是字符串的一维数组,我应该能够执行以下操作: @POST @Path("/test") @Produces(MediaType.APPLICATION_JSON) public Response InputList(@QueryParam("list"

你好,对不起,如果已经问过了,但是找不到

这是我的问题,我不知道有多少字段将发送到我的Web服务,因为它们是动态的。因此,我想向jersey jaxb ressource发送一个json数组。由于我的json数组中的对象是字符串的一维数组,我应该能够执行以下操作:

  @POST
    @Path("/test")
    @Produces(MediaType.APPLICATION_JSON)
    public Response InputList(@QueryParam("list") final List<String> inputList)
@POST
@路径(“/test”)
@产生(MediaType.APPLICATION_JSON)
公共响应输入列表(@QueryParam(“列表”)最终列表输入列表)
这是我的json数组 { “名单”:[ “你好”, “世界” ] }


这似乎不起作用

您现在拥有的东西不起作用,因为您的JSON不表示字符串列表。它表示具有单个属性(字符串列表)的对象。也就是说:

["hello", "world"]
是一个简单的JSON数据流,可以在Java中直接反序列化到
列表中。鉴于:

{"list" : ["hello", "world"]}
是一个更复杂的数据流,需要反序列化为对象,例如如下所示:

public class ListHolder {
    private List<String> list;

    // constructors, getters/setters
}
公共类列表持有者{
私人名单;
//构造函数、getter/setter
}
然后,您可以在Jersey资源中使用此选项:

@POST
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
public Response InputList(@QueryParam("list") final ListHolder listHolder) {
    final List<String> list = listHolder.getList();
    // rest of code
}
@POST
@路径(“/test”)
@产生(MediaType.APPLICATION_JSON)
公共响应输入列表(@QueryParam(“列表”)最终列表持有者){
最终列表=listHolder.getList();
//代码的其余部分
}

@Fongios-这是一个完全独立的问题,应该这样发布。