我正在研究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数据中。 任何想法都非常感激。
提前致谢
答案 0 :(得分:0)
您可能需要再创建一个实体来映射您的新对象,如
public class Data {
private String year;
private String description;
}
然后加载这些实体的列表并将它们添加到响应中。