Android从json数组获取内部json数组

时间:2015-10-14 06:42:02

标签: android arrays json

大家好,我有一个棘手的问题,我已经解决了几个小时。

这是我的JSON回复:

  {
"DATA": [
    {
        "Name": "Aha",
        "ListData": [
            {
                "ID": 1
            },
            {
                "ID": 2
            },
            {
                "ID": 3
            }
        ]
    }
]
}

这是我到目前为止所做的:

 try {
        JSONObject jsonObj = new JSONObject(result);
        JSONArray jsonArray = jsonObj.getJSONArray("DATA");

        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject data = jsonArray.getJSONObject(i);
            JSONArray arr = data.getJSONArray(Constants.LIST_DATA);
            for(int j = 0; j < arr.length(); j++) {
                JSONObject innerData = arr.getJSONObject(i);

                int id = innerData.getInt(Constants.ID);

                item = new HashMap<>();
                item.put(Constants.ID, id);
                itemList.add(item);
            }
        }

    } catch(JSONException e) {
        Log.e("JSONException", "" + e.toString());
    }

但是我只得到数组的正确大小(3),但我得到了相同的ID 1.我的代码似乎有什么问题?任何帮助将非常感谢。谢谢!

结果是这样的:

ID=1,ID=1,ID=1

而我的期望是:

ID=1,ID=2,ID=3

1 个答案:

答案 0 :(得分:5)

您应该使用

 JSONObject innerData = arr.getJSONObject(j);

您正在使用j=0进行第二次循环,并且您尝试从第一次循环中获取JSONString