2011-12-24 6 views
1

Je suis nouveau sur Java et la programmation pour Android et j'ai vu beaucoup de tutoriels, mais je suis un peu désintéressé sur la façon de faire une boucle sur un objet JSONObject et le définir à ma classe.Boucler et convertir l'objet JSON en tableau

Exemple de données JSON: http://sickbeard.com/api/#history

classe I fait:

public Episode(JSONObject obj) { 
     try { 
      this.id = Integer.parseInt(obj.getString("episode").toString()); 
      this.tvId = Integer.parseInt(obj.getString("tvdbid").toString()); 
      this.resource = obj.getString("resource").toString(); 
     } catch (NumberFormatException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

Je suis venu aussi loin que cela ...

ArrayList<Episode> episodeList = new ArrayList<Episode>(); 
      JSONObject data = new JSONObject(); 
      for(int i = 0; i < 2; i++) { 
       try { 
        data = response.getJSONObject("data"); 
        episodeList.add(new Episode(data)); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
      return null; 
      // for each entry create new episode :) 
     } else { 
      return null; 
     } 
+1

A [SSCC] (http://sscce.org /) - exemple serait super, car nous ne savons pas ce qu'est la «réponse», ni pourquoi vous avez même cette boucle for-place en place. – Pit

+0

Trouvé la solution, voir ci-dessous. Merci quand même :) – PvdL

+0

Pas de problème, content de l'avoir fait tout seul! – Pit

Répondre

3

Trouvé il :)

try { 
      response = new JSONObject(con.query("history", parameters)); 
      JSONArray data = response.getJSONArray("data"); 
      for(int i = 0; i < data.length(); i++) { 
       try { 
        episodeList.add(new Episode((JSONObject) data.get(i))); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
1
//   is = entity.getContent(); 
ArrayList<String> myList = new ArrayList<String>(); 


       //convert response to string 
      try{ 

       BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
       StringBuilder sb = new StringBuilder(); 
       String line = null; 
       while ((line = reader.readLine()) != null) { 
        sb.append(line + "\n"); 
       } 
       is.close(); 
       result = sb.toString(); 


      } catch (Exception e) { 
       Log.e("log_tag", "Error converting result "+e.toString()); 
      } 




      //parse json data 
      try{ 
        jArray = new JSONArray(result); 


        for(int i=0;i<jArray.length();i++){ 

         json_data = jArray.getJSONObject(i); 

         myList.add(json_data.getString("id")); 
         Log.i("log_tag","id: " + json_data.getString("id")); 
        } 

      } 
      catch(JSONException e){ 
        Log.e("log_tag", "Error parsing data "+e.toString()); 
      } 


return myList; 

// alors u peut recevoir ce myList:

ArrayList<String> get_data_id = postData(); 
// get_data_id = myList 
get_data_id.get(0) - it is first element, 
get_data_id.get(1) - it is second element 

.... EXEMPLE

json data is : [{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"},{"id":"5"},{"id":"6"}] 
         {in loop} myList.add(json_data.getString("id")); 
get_data_id.get(0) = 1 
get_data_id.get(1) = 2 
get_data_id.get(2) = 3 
.......... 
:) 

Bonne chance