大家好,我有一个棘手的问题,我已经解决了几个小时。
这是我的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
答案 0 :(得分:5)
您应该使用
JSONObject innerData = arr.getJSONObject(j);
您正在使用j=0
进行第二次循环,并且您尝试从第一次循环中获取JSONString
。