Json 如何创建适当的JAXB映射以实现Jersey反序列化过程

Json 如何创建适当的JAXB映射以实现Jersey反序列化过程,json,serialization,jersey,jax-rs,deserialization,Json,Serialization,Jersey,Jax Rs,Deserialization,我收到来自WS的JSON响应: [ { "name": "Bobby", "status": "single" }, { "name": "John", "status": "married" } ] 这是我的包装纸 @XmlRootElement(name = "users") public class UserListWrapper { private List<User> users; @XmlE

我收到来自WS的JSON响应:

[
  {
    "name": "Bobby",
    "status": "single"
  },
  {
    "name": "John",
    "status": "married"
  }
]
这是我的包装纸

@XmlRootElement(name = "users")
public class UserListWrapper {   

    private List<User> users;   

    @XmlElement(name = "user")
    public List<User> getUsers() {
        return users;
    }    

    // getters and setters omitted
}
问题是当Jersey尝试反序列化对我的包装器对象的响应时。上面说

Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of com.jersey.test.UserListWrapper out of START_ARRAY token
我发现我的包装器注释有问题。我怎样才能修好它们

UPD

当我发送

{
  "user": [
    {
      "name": "Bob",
      "status": "single"
    },
    {
      "name": "Mike",
      "status": "married"
    }
  ]
}
一切正常。但我需要这种格式

[
  {
    "name": "Bobby",
    "status": "single"
  },
  ...
]
UPD

泽西岛客户端代码

    HttpAuthenticationFeature authenticationFeature = HttpAuthenticationFeature.basic("user", "secret");
    Client client = ClientBuilder
            .newClient()
            .register(authenticationFeature)
            .register(JacksonFeature.class);

    WebTarget target = client.target("http://localhost:8080/server/");
    UserListWrapper entity;
    Response resp;

    resp = target.queryParam("u", "info")
            .path("/rest/users")
            .request()
            .accept(APPLICATION_JSON)
            .get();


    entity = resp.readEntity(UserListWrapper.class);

那么忘记
UserListWrapper
包装器吧<代码>列表非常适合JSON数组(
[]
)格式。如果添加包装类,则需要额外的JSON对象层(
{}
)。这:


但我不能修改Web服务。它向我发送
[{“name”:“Bobby”,“status”:“single”},…]
,资源方法接受
UserListWrapper
类型?是的。但我可以对包装器进行更改。它在客户端上。我不明白的是,如果服务需要
{“用户”:[{},{}]}
,那么为什么不这样发送它呢?您似乎遇到了两个不同的问题:一个是发送问题,另一个是接收问题。这就是让我困惑的原因。你能澄清一下吗
    HttpAuthenticationFeature authenticationFeature = HttpAuthenticationFeature.basic("user", "secret");
    Client client = ClientBuilder
            .newClient()
            .register(authenticationFeature)
            .register(JacksonFeature.class);

    WebTarget target = client.target("http://localhost:8080/server/");
    UserListWrapper entity;
    Response resp;

    resp = target.queryParam("u", "info")
            .path("/rest/users")
            .request()
            .accept(APPLICATION_JSON)
            .get();


    entity = resp.readEntity(UserListWrapper.class);
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response createBook(List<User> users) {
WebResource resource = client.resource("...");
List<User> users = resource.get(new GenericType<List<User>>(){});
List<User> user = response.readEntity(new GenericType<List<User>>(){});