2017-08-28 3 views
0

私はこのようなJSONデータを持っています。このタイプのデータを解析するには、それは複数のjsonArraysを持っていますか?アンドロイドに複数のjsonArraysを持つjsonデータを解析するには?

{ 
     "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は、データを解析するためにいくつかのコードを書くが、それは仕事をdidntの、ラベルをデータを解析し、IDの値を取得する必要があります。

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); 
    } 

コードを変更する必要があるデータを解析するにはどうすればよいですか?

答えて

1

あなたはJSONObjectとJSONArrayを使用する必要があなたは正しいクラスを使用する必要があり、異なるオブジェクトである:

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

など

0

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

はarray..itは、配列オブジェクトに収集することができるべきで返すます。..

+0

この行にはエラーが表示されます –

+0

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

+0

はい、エラーが表示されます。配列のインデックスを使用する必要がありますので、 "item"をフェッチすることができます。 forループを使用してJSONOBJECT(i)メソッドを使用してください。 内部ループuは配列を返す "item"を持つことができます。 したがって、基本的に正しいクラスはRHSに返すものを見て使用してください。 – Ankit

関連する問題