2011-12-06 37 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

JavaオブジェクトをJSON配列に入れる前にソートしないのはなぜですか?あなたのループは 'for(Stuff i:stuff) 'であるべきだと思います。 – Paul

+0

JSONオブジェクトは比較できません。だから、何で並べ替える? –

+0

@James、彼は彼が何でも望みどおりに並べ替えることができます。彼はそれを反復する前に彼の 'Collection 'を並べ替えることができます。彼は各 'Stuff'を' TreeMap'(key = 'getId()'とval = 'getName()')に分解し、 'TreeMap'を繰り返してJSON配列を構築することができます。彼は 'JSONObject'クラスを拡張し、それを比較可能にすることができました。 – Paul

答えて

2

これはnet.sf.jsonライブラリを使用していると思いますか?もしそうなら、私は次のようなものを試してみよう。私はこれがうまくいくかどうかはわかりませんが、それがうまくいくかどうかは、最も簡単な方法です。残念ながら、私はそのライブラリに慣れていないので、正確な詳細がわかりません(add(int、Object)がオブジェクトをプッシュダウンまたは上書きするかどうかわからない、2番目のJSONArrayの作成をスキップできます) :

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

Json-lib(あなたが言及したライブラリ)は、コレクションと配列([examples](http://json-lib.sourceforge.net/usage.html#arrays))を使って簡単に作業できます: 'JSONArray jsonArray = JSONArray.fromObject( "['json'、 'is'、 'easy']"); ' – Paul

関連する問題