需要RESTLET + JAX-RS + JSON很好的例子

时间:2012-02-16 14:55:05

标签: java google-app-engine jax-rs jackson restlet

我正在使用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" 
}

如果有人可以给我一些解释/示例代码/想法。非常感谢

祝你好运

2 个答案:

答案 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 
}