2014-06-25 6 views
0

J'utilise simple-jsonJSONArray obtient plus écrit

Je suis en train de créer JSON pour objet jqGrid. Les données sont ajoutées mais correctement, mais le deuxième enregistrement est écrasé.

ArrayList resList = connect.statement_query(sql, para); 

      jsonObject = new JSONObject(); 

      jsonObject.put("total", resList.size()/para.length); 
      jsonObject.put("page", 1); 
      jsonObject.put("records", resList.size()/para.length); 

      JSONArray cellArray = new JSONArray(); 
      JSONArray cell = new JSONArray(); 
      JSONObject cellObj = new JSONObject(); 

      for (int i = 0; i < resList.size(); i += para.length) { 
       cellObj.put("id", resList.get(i)); 

       JSONArray temp=new JSONArray(); 
       temp.add(resList.get(i)); 
       temp.add(resList.get(i + 1)); 
       temp.add(resList.get(i + 2)); 
       temp.add(resList.get(i + 3)); 
       temp.add(resList.get(i + 4)); 

       cell=temp; 
       cellObj.put("cell", cell); 
       System.out.println("Cell Obj: "+cellObj.toJSONString()); 
       cellArray.add(cellObj); 
       System.out.println("Cell Array: "+cellArray.toJSONString()); 
       //cellObj.clear(); 
       temp.clear(); 
      } 
      System.out.println("Cell Array-Out: "+cellArray); 
      jsonObject.put("rows", cellArray); 

Le résultat est comme:

Cell Obj: {"id":"1000","cell":["1000","BE6K","vshekhar","2014-06-02","N\/A"]} 
Cell Array: [{"id":"1000","cell":["1000","BE6K","vshekhar","2014-06-02","N\/A"]}] 
Cell Obj: {"id":"1001","cell":["1001","BOA","maahamad","2013-05-01","N\/A"]} 
Cell Array: [{"id":"1001","cell":["1001","BOA","maahamad","2013-05-01","N\/A"]},{"id":"1001","cell":["1001","BOA","maahamad","2013-05-01","N\/A"]}] 
Cell Array-Out: [{"id":"1001","cell":[]},{"id":"1001","cell":[]}] 
  1. Pourquoi Cell Array s'écrasé sur le deuxième disque et pourquoi il fait partie en blanc la boucle? Comment le surmonter?

Répondre

0

1) Pour obtenir objet réecrivent -

Vous devez reintialize cellObj en boucle.

for (int i = 0; i < resList.size(); i + = para.length) {
cellObj = new JSONObject();

2) Pour obtenir cellulaire hachurer -

Vous temp chambre de compensation par 'temp.clear();' L'objet Cell fait référence à temp, et temp est effacé, c'est la raison pour laquelle vous obtenez des données vides.

vous pouvez supprimer le code temp.clear().

+0

ce qui le rend pire. 'Cell Obj: {" id ":" 1000 "," cellule ": [" 1000 "," BE6K "," vshekhar "," 2014-06-02 "," N \/A "]} Cell Tableau: [{"id": "1000", "cellule": ["1000", "BE6K", "vshekhar", "2014-06-02", "N \/A"]}] Cell Obj: {"id": "1001", "cellule": ["1001", "BOA", "maahamad", "2013-05-01", "N \/A"]} Cellule Array: [{"id ":" 1000 "," cellule ": []}, {" id ":" 1001 "," cellule ": [" 1001 "," BOA "," maahamad "," 2013-05-01 "," N \/A "]}] Cell Array-Out: [{" id ":" 1000 "," cellule ": []}, {" id ":" 1001 "," cellule ": []}]' – MalTec

+0

Veuillez vérifier la réponse mise à jour. – Payal

+0

essayé cela. Si je ne l'efface pas. Il écrase toujours. – MalTec