【发布时间】:2016-12-05 18:57:12
【问题描述】:
我有一个 id 列表,我需要将其作为参数传递,以便以 JSON 格式显示。具体来说,我将值放在一个列表中,并希望我的 GET 方法将它们返回为:
[ 1, 5, 12,...]
我尝试使用 GenericList,但收到 MessageBodyWriter 错误:
MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=java.util.List<java.lang.Long>.
我使用的是 Jersey 2.16,输出自定义类列表没有问题。代码在这里:
@GET
@Path("{name}")
@Produces(MediaType.APPLICATION_JSON)
public Response getUsersByName(@PathParam("name") String name){
List<Long> userIds = userService.getUserssByName(name);
GenericEntity<List<Long>> list = new GenericEntity<List<Long>>(userIds){};
return Response.ok(list).build();
}
UserService 查询名称与某个名称匹配的所有用户的 hashmap 并返回其键列表:
public List<Long> getUserssByName(String name){
List<Long> ids = new ArrayList<>();
for (Entry<Long, User> entry : users.entrySet()){
User user = entry.getValue();
if (user.getName().equals(name)){
ids.add(entry.getKey());
}
}
return ids;
}
如前所述,我怎样才能显示该列表?
【问题讨论】: