2016-06-23 22 views
0

Mein problem ist, dass meine android app nicht analysiert die folgenden JSON daten. Wenn ich andere JSON Quellen verwende, analysiert es OK. Ich habe die JSON unten validiert und es gab keine Probleme. Es wirft keinen Fehler auf. Ich kann nicht verstehen warum.android volley json parser fehler

JSON-Daten wie folgt aussieht:

[ 
{ 
"Id":"1", 
"name":"habib", 
"f":[ 
{ 
"Id":"1", 
"taeed":"0", 
"codkala":"101", 
"namekala":"سس گوجه فرنگی", 
"count":"5", 
"chid":"0" 
}, 
{ 
"Id":"1", 
"taeed":"0", 
"codkala":"102", 
"namekala":"ماست موسیر", 
"count":"1", 
"chid":"0" 
}, 
{ 
"Id":"1", 
"taeed":"0", 
"codkala":"103", 
"namekala":"شیر گم چرب", 
"count":"3", 
"chid":"0" 
} 
] 
}, 
{ 
"Id":"2", 
"name":"habib", 
"f":[ 
{ 
"Id":"2", 
"taeed":"0", 
"codkala":"101", 
"namekala":"سس گوجه فرنگی", 
"count":"5", 
"chid":"0" 
}, 
{ 
"Id":"2", 
"taeed":"0", 
"codkala":"102", 
"namekala":"ماست موسیر", 
"count":"1", 
"chid":"0" 
}, 
{ 
"Id":"2", 
"taeed":"0", 
"codkala":"103", 
"namekala":"شیر گم چرب", 
"count":"3", 
"chid":"0" 
} 
] 
} 
] 

Und mein Code zum Parsen:

public class AnbarParser { 
public static List<AnbarModel> parseFeedAnbar(String content){ 
    try { 

     JSONArray ar = new JSONArray(content); 
     List<AnbarModel> anbarModelList = new ArrayList<>(); 
     for (int i = 0; i<1; i++){ 
      JSONObject obj = ar.getJSONObject(i); 

      AnbarModel anbarModel = new AnbarModel(); 
      anbarModel.setId(obj.getString("Id")); 
      anbarModel.setName(obj.getString("name")); 

      List<Faktor> faktorlist = new ArrayList<>(); 

      JSONArray arr2 = obj.getJSONArray("f"); 
      for (int ii = 0; i<1; ii++){ 
       JSONObject obj2 = arr2.getJSONObject(i); 
       Faktor faktor = new Faktor(); 
       faktor.setId(obj2.getString("Id")); 
       faktor.setTaeed(obj2.getString("taeed")); 
       faktor.setCodkala(obj2.getString("codkala")); 
       faktor.setNamekala(obj2.getString("namekala")); 
       faktor.setCount(obj2.getString("count")); 
       faktor.setChid(obj2.getString("chid")); 
       faktorlist.add(faktor); 
      } 
      anbarModel.setFaktor(faktorlist); 
      anbarModelList.add(anbarModel); 



     } 

     return anbarModelList; 



    }catch (JSONException e){ 
     e.printStackTrace(); 
     return null; 

    } 
    //return null; 
} 
} 
+0

Verschieben Sie die return-Anweisung nach dem catch und die Erstellung deranbarModelList als erste Zeile in der Methode. vor der Versuchserklärung. –

+1

Überprüfen Sie Ihre Bedingung, die Sie initialisiert haben ii Überprüfen Sie die Bedingung für i. überprüfe deine for-Schleife genau. –

+0

Hat meine Antwort Ihnen geholfen? –

Antwort

2

Hoffnung haben Sie eine kleine verpasst "i" in Sie Array for-Schleife.

Da i wegen seiner vorherigen Schleife größer als 1 ist, wird es nie in die for-Schleife für Array kommen. Ändern Sie Ihren Code-Link unten.

Überprüfen Sie den folgenden Code.

for (int ii = 0; ii<1; ii++){ // here is the only change. add ii instead of i 
      JSONObject obj2 = arr2.getJSONObject(ii); // here also replace your i with ii 
      Faktor faktor = new Faktor(); 
      faktor.setId(obj2.getString("Id")); 
      faktor.setTaeed(obj2.getString("taeed")); 
      faktor.setCodkala(obj2.getString("codkala")); 
      faktor.setNamekala(obj2.getString("namekala")); 
      faktor.setCount(obj2.getString("count")); 
      faktor.setChid(obj2.getString("chid")); 
      faktorlist.add(faktor); 
     } 
+0

freundlicherweise akzeptieren Sie es als richtige Antwort, wenn es Ihnen hilft. –