Rest-如何动态地在JSON数据中添加/包含属性

时间:2012-09-04 15:35:42

标签: hibernate rest

我正在研究Rest Web服务并为移动应用程序生成JSON数据。我使用Jersey 1.4,Web服务器作为tomcat 7,Hibernate 3.3,MySQL5。 我是REST世界的新手。 我有一个端点,它只根据我的查询返回一年的列表。

输出:

{ “成功”:真, “计数”:2 “消息”:空, “数据”:[{ “年”:2012},{ “年”:2013}]}

这很好,我的预期。

但是我被要求在这个返回的json数据集中包含string类型的描述值。基于年份的价值。

如果年份= 2012年(当前年度)描述应该是“今年”,年份= 2013年描述=“明年”,年份= 2011年描述=“上一年度”,年份= 2010年描述=“2010年”等等。

我要归还的是: {“success”:true,“count”:2,“message”:null,“data”:[{“year”:2012,“description”:“今年”},{“year”:2013,“description “:”明年“}]

我的资源类

 @GET
@Path("/{countryCd}/upcoming")
@Produces("application/json")
public  JResponse<JsonResponse> getYearsForUpcoming(@PathParam("countryCd") 
     String  countryCode) {

     JobDao jobDao =new JobDao();   
     JsonResponse res= new JsonResponse();


   @SuppressWarnings({ })
List<Jobs> jobList=  jobDao.getYearsForUpcoming(countryCode);
   if(jobList==null){
       throw new NotFoundException("Error occured! NO data found");
   }

    int count = jobList.size();
    res.setCount(count);
    res.setData(jobList);

           return JResponse.ok(res).build();

}

我的查询

String sql =“SELECT distinct year(s_date)作为country = countryCode和year(s_date)&gt; = year(curdate())order by year(s_date)asc”;                 查询query = session.createSQLQuery(sql).addScalar(“year”)。setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
                query.setParameter(“countryCode”,countryCode);                         comingRegattaList = query.list();

Jobs.java(myeclipse为表格作业生成实体)

public class Jobs实现java.io.Serializable {

private static final long serialVersionUID = 1L;
private Integer jobId;
private String status;
    private Date  SDate;
    //some more

    // getter and setters

}

我无法如何将新属性添加到我的实体中不存在的JSON数据中。 任何想法都非常感激。

提前致谢

1 个答案:

答案 0 :(得分:0)

您可能需要再创建一个实体来映射您的新对象,如

public class Data {
    private String year;
    private String description;
}

然后加载这些实体的列表并将它们添加到响应中。