更改Jersey-Jackson中的默认JSON

时间:2013-02-20 18:03:45

标签: java json jersey jackson

我正在使用Jersey(杰克逊POJO映射)构建RESTful服务并且有一些疑问...... 想象一个类似论坛的应用程序,我在域中有问题 POJO。

Group.java

class Group{
    int id;
    String name;
 //setter/getters
}

Question.java

class Question{
    int id;
    String title;
    String text;
  //setter/getters

} 

正如您所看到的,我在这两个类之间没有定义任何关系。我想说的是集团没有

private Question[] questions;

当我打电话给GET / rest / groups时,我得到了一个完美的JSON:

{
   [
     {"id":1, "name":"Group name..." },
     {"id":2, "name":"Group name..." }

   ]
}

当我要求GET / rest / groups / 12时,我想要得到的是:

 {
   "group":{
       "id":12,
       "name":"Group 12"

    },
    "questions":[
           {"id":102, "title":"question title..." },
           {"id":201, "title":"question title..." }   
     ]

}

我能够通过在Group类中定义成员变量来获得类似的东西:

 private Question[] questions;

我正在尝试从HAS-A依赖项中保持我的域类清理,因为我将使用Hibernate并将通过注释定义关系。 问题是: 什么是格式化JSON的最佳和最灵活的方式,我希望返回与另一个有HAS-A关系的资源......

1 个答案:

答案 0 :(得分:0)

您需要构建类似GroupResponse对象的内容:

class GroupRespose {
  final Group question;
  final List<Question> questions;
}

并将此作为您的响应对象。这将为您提供您想要的格式(尽管给出了您的问题,我怀疑您真的想要final Group group并且这是问题中的拼写错误。)