我正在使用AppEngine试验Restlet框架,我尝试使用JAX-rs资源检索一个Object(例如ArrayList)列表到JSON表示
例如示例用户类:
public class User {
private String lastname;
private String firstname;
public User(){};
public User(String lname,String fname){
this.firstname = fname;
this.lastname = lname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
}
我想检索像这样的用户列表
@GET @Path("users")
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<User> getUsers() {
ArrayList<User> users = new ArrayList<User>();
users.add(new User("userlastname1", "userfirstname1"));
users.add(new User("userlastname3", "userfirstname2"));
return users;
}
我希望得到这个JSON表示
[
{
lastname: "userlastname1",
firstname: "userfirstname1"
},
{
lastname: "userlastname2",
firstname: "userfirstname2"
}
]
实现这一目标的最佳方法是什么?
Restlet文档提到序列化过程是自动化的,是的只有一个对象就像“用户”
new User("userlastname1", "userfirstname1")
给我一个好的JSON表示
{
lastname: "userlastname1",
firstname: "userfirstname1"
}
如果有人可以给我一些解释/示例代码/想法。非常感谢
祝你好运
答案 0 :(得分:1)
我实际上只是使用Restlet的Java EE版本来解决这个问题。不确定这个模块是否可用于GAE沙箱,但我刚刚将Jackson的Restlet扩展添加为依赖项,它就像一个魅力。
如果您使用的是Maven:
<dependency>
<groupId>org.restlet.jee</groupId>
<artifactId>org.restlet.ext.jackson</artifactId>
<version>2.0.10</version>
</dependency>
答案 1 :(得分:1)
@Path("/users")
public interface IUserRoutes
{
@GET
Response getUsers();
}
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class UserRoutesImpl implements IUserRoutes
{
public Response getUsers()
{
return new UserResponse().getUsers();
}
}
public class UserResponse
{
public Response getUser()
{
List<Users> users = new UserModel().getUsers();
return Response.ok(users).build();
}
}
您的用户对象应该是POJO。
public class User
{
private String firstName;
private String lastName;
public String getFirstname()
{
return firstName;
}
public String getLastname()
{
return lastName;
}
//etc
}