0

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

输出:

{"success":true,"count":2,"message":null,"data":[{"year":2012},{"year":2013}]}

这是我所期望的。

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

如果 year=2012(当前年份)描述应该是“今年”,对于 year=2013 description="next year",对于 year=2011 description="previous year",对于 year=2010 description="2010" 等等.

我必须返回类似:{"success":true,"count":2,"message":null,"data":[{"year":2012,"description":"this year"}, {“年份”:2013,“描述”:“明年”}]

我的资源类

 @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) as year from jobs where country=:countryCode and year(s_date)>=year(curdate()) order by year(s_date) asc"; 查询 query=session.createSQLQuery(sql).addScalar("year").setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
query.setParameter("countryCode", countryCode); 即将到来的RegattaList= query.list();

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

公共类乔布斯实现 java.io.Serializable {

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

    // getter and setters

}

我不知道如何向我的实体中不存在的 JSON 数据添加新属性。任何想法都非常感谢。

提前致谢

4

1 回答 1

0

您可能必须再创建一个实体来映射您的新对象,类似于

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

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

于 2012-09-04T16:03:14.470 回答