2017-07-20 84 views
-2

我在下面的表單中有JSONArray,並且需要從中獲取每個單獨的數字。在JSONarray內分隔數組

{ 
    "layout": [ 
    [ 
     "12", 
     "21", 
     "31" 
    ], 
    [ 
     "empty", 
     "22", 
     "32" 
    ], 
    [ 
     "13", 
     "23", 
     "33" 
    ] 
    ] 
} 

例如在第一陣列[12, 21, 31]元件內部layout陣列我需要得到12,21,31單獨地

目前我使用此代碼

private void doImageLogic(String ParsedString, String metadata) { // sorts through images json and calls imageDownloader to get the bitmaps - e.g. retrieve apple.jpg 
    Log.d("STRING_CHECK", "testing"); 

    try { 
     JSONObject j = new JSONObject(ParsedString); 
     JSONArray pictureFiles = j.getJSONArray("layout"); 
     for (int i = 0; i < pictureFiles.length(); i++){ 

      mJpegNames.add("http://www.simongrey.net/08027/slidingPuzzleAcw/images/"+ metadata+"/"+ pictureFiles.getJSONArray(i)); 
     } 
     ImageDownload imageDownloader = new ImageDownload(mPuzzleItem, mContext); 
     imageDownloader.execute(mJpegNames); 
     Log.d("Test", "test"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

} 

但這返回3 JSONarray內的數組,我無法弄清楚如何訪問嵌套的數組。

+2

'pictureFiles.get(指數)' – Mibac

+0

適當佈局JSON,再加上增加了更多的描述來解釋什麼是需求 –

回答

0

試試這個

JSONObject j = new JSONObject(ParsedString); 
    JSONArray pictureFiles = j.getJSONArray("layout"); 

    for (int i = 0; i < pictureFiles.length(); i++){ 
    JSONArray ja = pictureFiles.getJSONArray(i); 
     for(int j=0;j<ja.length();j++){ 
      mJpegNames.add("http://www.simongrey.net/08027/slidingPuzzleAcw/images/"+ metadata+"/"+ ja.getString(j)); 
    } 
0

你需要嵌套一個for循環遍歷內部數組。例如:

for (int i = 0; i < pictureFiles.length(); i++) { 
    for (int k = 0; k < pictureFiles.getJSONArray(i).length(); k++) { 
     mJpegNames.add("http://www.simongrey.net/08027/" + 
         "slidingPuzzleAcw/images/metadata/" + 
         pictureFiles.getJSONArray(i).getString(k)); 
    } 
}