因此,我试图获取位于“ lineStatus”内的“ statusSeveretyDescription”。第一个“ for”循环有效,但是嵌套循环返回null。朝正确方向的指针将不胜感激。请在下面查看代码和JSON的图片。
JSONArray array = new JSONArray(response);
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.optJSONObject(i);
String line = object.optString("id");
//nested array
JSONArray arrayStatus = object.getJSONArray("lineStatuses");
int len = arrayStatus.length();
for (int j = 0; j < len; j++) {
JSONObject o = arrayStatus.getJSONObject(j);
String statusSeverityDescription = o.optString(
"statusSeverityDescription", "");
}
if (line != null) {
tubeLines.add(line + statusSeverityDescription);
}
// Once we added the string to the array, we notify the arrayAdapter
arrayAdapter.notifyDataSetChanged();
}
最佳答案
您有2期。
1)您的变量作用域定义不正确,您的statusSeverityDescription
变量在for循环结束时就被释放。要解决此问题,请将String statusSeverityDescription
移至for循环之外,如下所示
String statusSeverityDescription;
for (int j = 0; j < len; j++) {
JSONObject o = arrayStatus.getJSONObject(j);
statusSeverityDescription = o.optString(
"statusSeverityDescription", "");
}
2)
statusSeverityDescription
应该是一个将所有statusSeverityDescription
存储在json有效负载中的数组。因此,使其成为数组,或者了解给定的statusSeverityDescription
最后处理的lineStatuses
将是剩下的statusSeverityDescription
。