JAX RS 获取对象列表

JAX RS get list of objects

尝试使用 JAX RS 我想用我的数据实现 CRUD 操作。首先,我想获取 json formate 中的对象列表。

@Path("/users")
public class ListUsersRestController {

    @GET
    @Produces("application/json")
    public List<User> getUsers(){

        List<User> users = new ArrayList<>();
        users.add(new User("Dean", "Winchester"));
        users.add(new User("Sam", "Winchester"));
        users.add(new User("Bobby", "Singer"));
        return users;
    }

    @XmlRootElement
    public class User {

        @XmlElement(name="first-name")
        private String firstName;

        @XmlElement(name="last-name")
        private String lastName;

        public User(){

        }

        public User(String firstName, String lastName) {
            this.firstName = firstName;
            this.lastName = lastName;
        }

    }
}

当我请求我的 URI 时,我总是收到 500 服务器错误并且日志文件中没有任何错误(我使用的是 glassfish)。

问题出在这里:

@XmlRootElement
public class User {
    ...
}

你的 User class 现在是 ListUsersRestController 的内部 class 并且 JAXB 似乎无法编组内部 classes(因为它们是更像是 ListUsersRestController 的实例成员,而不是真正的 class)。将其外部化为正常 class 或使其成为 static:

@XmlRootElement
public static class User {
    ...
}