2014-09-15 6 views
5

Mam wielowymiarową tablicę, którą chcę odzyskać za pomocą JSON w Androidzie. Mam następujący JSON struktury dla tego:Jak odzyskać tablicę wielowymiarową za pomocą json w Androidzie

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

Chcę dostać "name", vendor_name, vendor_id w moich ciągów w android. Ale nie mam pojęcia, jak to zrobić. Proszę dać mi znać, jak to odzyskać.

+0

próbował ... potem zamieścić tutaj ... !!! :( – Ruchir

+0

chcesz przekonwertować swoją tablicę json do tablicy 2d na przykład ya? –

+0

Istnieje wiele parserów json w java takich jak gson, jackson itp. –

Odpowiedz

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

spróbuj powyższego kodu otrzymasz pożądaną wydajność !!! –

+5

dont tylko pozwól im kopiować i wklej kod, przynajmniej daj znać, co się dzieje w twoim fragmencie. –

+0

Chciałbym ci wyjaśnić, t Klasa Data jest taka, ponieważ istnieje wiele pakietów, które studio Android prosi o zaimportowanie. Doceniam twoją odpowiedź, ale byłoby to bardziej pomocne, gdybyś podał jakieś wyjaśnienie. –

2

Spróbuj w ten sposób, miej nadzieję, że to pomoże ci rozwiązać twój problem.

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

Po prostu przyjacielska sugestia, nie sądzisz, że istnieje potrzeba wyjaśnienia co najmniej bardzo prostej próbki, aby nowicjusz mógł się nauczyć? –

+0

@ KickButtowski, Kochani, tutaj nie umieszczam żadnego nieznanego lub niezrozumiałego kodu, więc jeden wie, json łatwo zrozumiał cokolwiek tu zrobiłem i dziękuję za sugestię –

+2

A co z tymi, którzy nie używają ... – MadProgrammer