所以我试图获得'lineSeatty'里面的'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();
}
答案 0 :(得分:2)
你有2个问题。
1)您的变量范围不正确,只要for循环结束,您的statusSeverityDescription
变量就会被释放。要解决此问题,请将String statusSeverityDescription
移到for循环之外,如此
String statusSeverityDescription;
for (int j = 0; j < len; j++) {
JSONObject o = arrayStatus.getJSONObject(j);
statusSeverityDescription = o.optString(
"statusSeverityDescription", "");
}
2)statusSeverityDescription
应该是一个存储json有效负载中所有statusSeverityDescription
的数组。因此,请将其设为数组,或者了解给定statusSeverityDescription
的上次处理lineStatuses
将是您留下的statusSeverityDescription
。