0
我使用Jersey REST webservices时遇到了一些问题。如何正确解组JAX-RS Webservice响应(JSON数组)?
我有以下域类:
@XmlRootElement
public class User {
private long id;
private String email;
private String forename;
private String role;
public User() {
// required for JAXB
}
// + Getters + Setters
}
和下面的资源类:
@Produces(MediaType.APPLICATION_JSON)
@Path("/users")
public class UserService {
@GET
public User[] getUsers() {
User[] users = ... // Users from DB
return users;
}
}
如果我请求资源(/用户)我得到以下JSON响应:
{
"user":
[
{
"id":"1",
"email":"[email protected]",
"forename":"Toby",
"role":"admin"
}
,
{
"id":"2",
"email":"[email protected]",
"forename":"Rob",
"role":"developer"
}
]
}
在客户端(我有相同的User.class)我想解开这个JSON回应相应的POJO。这意味着在这个例子中,我想获得两个类型的用户对象。我用GSON做了一些实验性的东西,比如
User[] users = gson.fromJson(JSONString, User[].class)
但是无法让它工作。例外:
JSONParseException: Expecting object but found array
任何人都可以告诉我什么Iam在这里做错了吗?或者是我的JSON格式的问题?
编辑: 用自己的实现集合类型的适配器试了一下提到here:
Type usersType = new TypeToken<List<User>>() {}.getType();
List<User> users = new ArrayList<User>();
users = gson.fromJson(reader, usersType);
现在荫得到一个JsonParseException:
The JsonDeserializer failed to deserialize Json Object {"user":[{"id":"1","email":"[email protected]","forename":"Toby",....