Android新手求助:如何用Java循环获取API全部符合条件的记录
解决Android API调用仅拉取第一条记录的问题
嘿,作为准Android开发者遇到这种问题太正常了,别着急,咱们一步步来搞定它!
从你描述的情况来看——调试时能看到系统找到全部三条记录,但代码只打印第一条——大概率是你把返回的JSON数组当成单个JSON对象来处理了。你当前的代码里用了getJSONObject("report"),但如果API返回的report字段对应的是一个包含多条记录的数组(而不是单个对象),那这样只会取到数组里的第一个元素,自然就只输出第一条啦。
具体修正步骤:
- 首先确认你的API返回的JSON结构,应该是类似这样的(调试里能看到三条,所以
report是数组):{ "report": [ {"id": 1, "content": "第一条记录"}, {"id": 2, "content": "第二条记录"}, {"id": 3, "content": "第三条记录"} ] } - 修改你的代码,把获取单个
JSONObject改成获取JSONArray,然后循环遍历数组里的每一条记录:try { JSONObject parentObject = new JSONObject(finalJson); // 把getJSONObject改成getJSONArray,因为report是数组 JSONArray reportArray = parentObject.getJSONArray("report"); // 循环遍历数组里的所有对象 for (int i = 0; i < reportArray.length(); i++) { JSONObject reportObject = reportArray.getJSONObject(i); // 在这里处理每条记录,比如打印或者存储 System.out.println("第" + (i+1) + "条记录:" + reportObject.toString()); } } catch (JSONException e) { e.printStackTrace(); // 别忘了处理JSON解析异常,比如字段不存在、格式错误等情况 } - 额外提醒:如果API返回的
report可能是空数组,记得在循环前判断reportArray.length() > 0,避免空指针或者无效循环。
这样修改后,你就能获取并打印所有三条记录啦,试试吧!
内容的提问来源于stack exchange,提问作者Deb
相关产品推荐
相关产品推荐

