【问题标题】:Need RESTLET + JAX-RS + JSON Good example需要 RESTLET + JAX-RS + JSON 好例子
【发布时间】:2012-02-16 14:55:04
【问题描述】:

我正在使用 AppEngine 试验 Restlet 框架,并尝试使用 JAX-rs 资源将对象列表(例如 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" 
}

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

最好的问候

【问题讨论】:

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


    【解决方案1】:

    实际上,我只是使用 Java EE 版本的 Restlet 为自己解决了这个问题。不确定这个模块是否可用于 GAE 沙箱,但我刚刚添加了 Jackson 的 Restlet 扩展作为依赖项,它就像一个魅力。

    如果您使用的是 Maven:

    <dependency>  
        <groupId>org.restlet.jee</groupId>  
        <artifactId>org.restlet.ext.jackson</artifactId>  
        <version>2.0.10</version>
    </dependency>
    

    【讨论】:

      【解决方案2】:
      @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 
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-18
        • 2012-09-18
        • 2013-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-22
        相关资源
        最近更新 更多