我正在研究 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 数据添加新属性。任何想法都非常感谢。
提前致谢