2011-12-06 22 views
0
@GET 
    @Produces("application/json") 
    @Consumes("application/json") 
    @Path("/getStuff/{id}") 
    public String getStuff(
     @PathParam("id") String id, 
     @Context HttpServletRequest request, 
     @Context HttpServletResponse response) throws Exception 
    { 
     Collection<Stuff> stuff = Manager.getStuff().values(); 
     JSONArray jArray = new JSONArray();  
     for (Stuff i : stuff) 
     {   
     jsnObjct.put("id", i.getId()); 
     jsnObjct.put("name", i.getName()); 
     jArray.add(jsnObjct); 
     } 
     json = jArray.toString(); 
     response.setContentType("text/javascript"); 
     response.getOutputStream().print(json); 
     response.flushBuffer(); 
     return null; 
    } 
+1

为什么在将它们放入JSON数组之前排序Java对象?我认为你的循环应该是'for(Stuff i:stuff)' – Paul

+0

JSONObjects不具有可比性。那么,按什么分类? –

+0

@James,他可以根据自己的意愿进行排序。在迭代之前,他可以对他的'Collection '进行分类。例如,他可以将每个'Stuff'拆分为一个'TreeMap',其中key ='getId()'和val ='getName()',然后遍历TreeMap并构建他的JSON数组。他可以扩展'JSONObject'类并使其具有可比性。 – Paul

回答

2

我猜你正在使用net.sf.json库?如果是这样,我会尝试如下所示。我不确定这是否可行,但如果它能够工作,它将是迄今为止最简单的方法。不幸的是,我对该库不太了解,所以我不确定具体细节(您可以跳过创建第二个JSONArray - 不确定add(int,Object)是否将对象压入或覆盖它们) :

Object[] myArray = jArray.toArray(); 
myArray = Arrays.sort(myArray); 
JSONArray sortedJArray = new JSONArray(); 
for (Object obj : myArray) { 
    sortedJArray.add(obj); 
} 
+0

Json-lib(您提到的库)可以很容易地处理集合和数组([示例](http://json-lib.sourceforge.net/usage.html#arrays)):'JSONArray jsonArray = JSONArray.fromObject(“['json','is','easy']”);' – Paul

相关问题