2

您好,如果已经问过但找不到,我很抱歉。

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

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

这是我的 json 数组 { "list": [ "hello", "world" ] }

这似乎不起作用....

4

1 回答 1

3

您现在拥有的内容不起作用,因为您的 JSON 不代表字符串列表。它表示具有单个属性的对象,该属性是字符串列表。以机智:

["hello", "world"]

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

{"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
}
于 2013-07-01T06:06:48.953 回答