在JSONarray中分隔数组

时间:2017-07-20 13:54:42

标签: java android arrays json

我在下面的表单中有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();
    }

}

但这会返回JSONarray中的3个数组,我无法弄清楚如何访问嵌套的数组。

2 个答案:

答案 0 :(得分: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));
    }
}

答案 1 :(得分:0)

试试这个

strcpy(target_msg1, msg1);
insert_substring(target_msg1,username,17);
printf("%s\n",target_msg1);