2014-09-15 5 views
5

Ho una matrice multidimensionale che voglio recuperare usando JSON in Android. Ho il seguente JSON Struttura per questo:Come recuperare array multidimensionale usando json in android

[ 
     [ 
     { 
      "name": "Banking", 
      "data": [ 
      { 
       "vendor_name": "SBI", 
       "vendor_id": "1" 
      }, 
      { 
       "vendor_name": "ICICI", 
       "vendor_id": "2" 
      }, 
      { 
       "vendor_name": "BOB", 
       "vendor_id": "3" 
      } 
      ], 
      "count": 4 
     } 
    ] 
] 

voglio ottenere "name", vendor_name, vendor_id nei miei archi in Android. Ma non ho idea di come farlo. Per favore fatemi sapere come recuperarlo.

+0

provato ... dopo che vi posto qui ... !!! :( – Ruchir

+0

vuoi convertire il tuo json array in array 2d per esempio ya? –

+0

Ci sono molti parser json in java come gson, jackson ecc. –

risposta

5
 try { 
      jsonObj = new JSONObject(YourString); 
     } catch (JSONException e) { 
      Log.v("Error in Parser", " " + e); 
     } 
    try{ 

    String name=jsonObj.getString("name"); 
      Data = jsonObj.getJSONArray("data"); 
       for (int i = 0; i < Data.length(); i++) {  
         JSONObject jsonObj2 = Data.getJSONObject(j); 
         String vName = jsonObj2.getString("vendor_name"); 
         String vId=jsonObj2.getString("vendor_id");  
       } 
}catch(Exception e) 
{ 
} 
+0

prova sopra il codice otterrai l'output desiderato !!! –

+5

non lasciarli solo copiare e incolla il codice, almeno fai sapere loro cosa sta succedendo nel tuo snippet –

+0

ti auguro che tu abbia spiegato t la classe Data è perché ci sono più pacchetti che Android Studio ti chiede di importare. Mentre apprezzo la tua risposta, sarebbe stato più utile se includessi qualche spiegazione. –

2

Prova in questo modo, spero che questo ti aiuterà a risolvere il tuo problema.

try{ 
    JSONArray jsonArray = new JSONArray("[[{\"name\":\"Banking\",\"data\":[{\"vendor_name\":\"SBI\",\"vendor_id\":\"1\"},{\"vendor_name\":\"ICICI\",\"vendor_id\":\"2\"},{\"vendor_name\":\"BOB\",\"vendor_id\":\"3\"}],\"count\":4}]]"); 
    HashMap<String,Object> responseMap = new HashMap<String, Object>(); 
    ArrayList<HashMap<String,String>> dataList = new ArrayList<HashMap<String, String>>(); 

    responseMap.put("name",jsonArray.getJSONArray(0).getJSONObject(0).getString("name")); 
    for(int i=0;i<jsonArray.getJSONArray(0).getJSONObject(0).getJSONArray("data").length();i++){ 
     HashMap<String,String> dataRow = new HashMap<String, String>(); 
     dataRow.put("vendor_name",jsonArray.getJSONArray(0).getJSONObject(0).getJSONArray("data").getJSONObject(i).getString("vendor_name")); 
     dataRow.put("vendor_id",jsonArray.getJSONArray(0).getJSONObject(0).getJSONArray("data").getJSONObject(i).getString("vendor_id")); 
     dataList.add(dataRow); 
    } 
    responseMap.put("data",dataList); 
    responseMap.put("count",jsonArray.getJSONArray(0).getJSONObject(0).getString("count")); 

    System.out.print("name : "+responseMap.get("name").toString()); 
    ArrayList<HashMap<String,String>> list = (ArrayList<HashMap<String,String>>)responseMap.get("data"); 
    for (HashMap<String,String> row : list){ 
     System.out.print("vendor_name : "+row.get("count")); 
     System.out.print("vendor_id : "+row.get("count")); 
    } 
    System.out.print("count : "+responseMap.get("count").toString()); 
}catch (Throwable e){ 
    e.printStackTrace(); 
} 
+2

Solo suggerimento amichevole, non credi che ci sia bisogno di spiegare almeno un esempio molto semplice in modo che i novizi possano imparare? –

+0

@ KickButtowski, Caro qui, non ho inserito alcun codice non familiare o non one know json capito facilmente qualunque cosa abbia fatto qui e ultimo ringraziamento per il tuo suggerimento –

+2

E che dire di quelli di utilizzo che non ... – MadProgrammer