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

时间:2013-06-30 23:47:13

标签: arrays json jaxb jersey

你好我很抱歉,如果已经被问到但无法找到。

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

  @POST
    @Path("/test")
    @Produces(MediaType.APPLICATION_JSON)
    public Response InputList(@QueryParam("list") final List<String> inputList)

这是我的json数组 { &#34; list&#34;:[     &#34;你好&#34 ;,     &#34;世界&#34; ] }

这似乎不起作用....

1 个答案:

答案 0 :(得分:4)

您现在所拥有的功能不起作用,因为您的JSON不代表字符串列表。它表示一个对象,它有一个属性,它是一个字符串列表。即:

["hello", "world"]

是一个简单的JSON数据流,可以直接反序列化为Java中的List<String>。鉴于:

{"list" : ["hello", "world"]}

是否需要将更复杂的数据流反序列化为对象,例如,如下所示:

public class ListHolder {
    private List<String> list;

    // constructors, getters/setters
}

然后您可以在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
}