2017-08-28 5 views
0

J'ai des données JSON comme ça, il y a plusieurs jsonArrays dedans. Comment analyser ce type de données?Comment analyser les données json qui ont plusieurs jsonArrays dans Android?

{ 
     "result": 
     [{ 
     "site_name":"comenius", 
     "ws_url":"https://comenius-api.sabacloud.com/v1/", 
     "base_url":"https://comenius.sabacloud.com/", 
     "logo_url":"", 
     "Title":"", 
     "menu_items":[ 
       {"item": 
        [{"id":"home1","label":"Home" }] 
        }, 
       {"item":  
        [{"id":"enrol1","label":"Enrollment" }] 
       }, 
       {"item": 
        [{"id":"transcripts1","label":"Completed Courses"}] 
       }, 
       {"item": 
        [{"id":"goals1","label":"Goals"}] 
       }, 
       {"item": 
        [{"id":"rprojects1","label":"Reference Projects"}] 
       }, 
       {"item": 
         [{"id":"iwh1","label":"Internal Work History"}] 
       }, 
       {"item": 
        [{"id":"ewh1","label":"EXternal Work History"}] 
       } 
       ] 
     },{.....} 
] 
} 

i besoin d'analyser les données et obtenir les valeurs d'identité, l'étiquette, j'écrire un code pour analyser les données, mais cela n'a pas fonctionné.

JSONObject subObj = new JSONObject(data2); 
    JSONObject innerObj1 = subObj.getJSONObject("result"); 
    JSONObject subArrayObj = innerObj1.getJSONObject("menu_items"); 
    for(int j =0;j < subArrayObj.length();j++) { 
    JSONObject innsersubObj = subArrayObj.getJSONObject("item"); 
    String id = innsersubObj.getString("id"); 
    String label = innsersubObj.getString("label"); 
    Log.e("id",id); 
    Log.e("label",label); 
    } 

Comment analyser les données que quelque chose doit changer dans le code?

Répondre

1

Vous devez utiliser JSONObject et JSONArray sont des objets différents, vous devez utiliser la classe correcte:

JSONArray resultArray = subObj.getJSONArray("result"); 
JSONObject firstItem = resultArray.getJSONObject(0); 
JSONArray menuItems = firstItem.getJSONArray("menu_items"); 
0

JSONARRAY subArrayObj = innerObj1.getJSONARRAY ("menu_items");

Depuis menu_items est un array..it retournaient doit être recueilli dans un objet tableau ..

+0

cette ligne indique l'erreur –

+0

JSONObject innsersubObj = subArrayObj.getJSONObject ("item"); –

+0

Oui, il va afficher une erreur .. Bec vous devez utiliser l'index d'un tableau, puis vous pouvez aller chercher "article" .. Vous pouvez utiliser une boucle for et utilisez la méthode get JSONOBJECT (i) pour le faire .. Ensuite boucle interne u peut avoir "item" qui retournera un tableau .. Donc, fondamentalement, utilisez les classes correctes en voyant le RHS que ce qu'il retourne. – Ankit